我有以下問題:
在 MVC 應用程式 Blazor 中,我有一個包含許多方法的控制器。我正在嘗試測驗其中一個方法,但在對其他物件進行了幾次呼叫后,它回傳到其控制器呼叫不同的方法。最后一個方法具有以下行
Return Redirect(Url.Action("MyActionName", "MyControllerName", new { id = myId }));
一開始我的問題是 Url 為空,但是,我在測驗中使用以下代碼對其進行了排序:
var UrlHelperMock = new Mock<System.Web.Mvc.UrlHelper>();
c.Url = UrlHelperMock.Object;
UrlHelperMock.Setup(x => x.Action("MyActionName", "MyControllerName", new { id = MyId })).Returns("myURL" myId.ToString());
現在,Url 不再是 null,但是當我嘗試查看 Url.Action 回傳的內容時,它是 null 而不是“myURL” myId.ToString()。關于如何解決這個問題的任何想法,請?
uj5u.com熱心網友回復:
我認為正在發生的情況是該引數new { id = MyId }不等于您的設定,因為它是一個參考型別。嘗試使用以下代碼進行設定:
UrlHelperMock
.Setup(x => x.Action("MyActionName", "MyControllerName", It.Is<T>(y => y.id == MyId )))
.Returns("myURL" myId.ToString());
//where T equals the type of the parameter
這將檢查引數是否是型別T以及它的 id 是否等于您的MyId.
uj5u.com熱心網友回復:
它對我的排序是意識到 id 需要是任何東西,所以改為:
UrlHelperMock.Setup(x => x.Action("MyActionName", "MyControllerName", It.IsAny<object>() })).Returns("myURL" myId.ToString());
將它作為生成 T 是錯誤的,因為它需要是特定的,并且字串也不起作用,因為沒有 string.id,其他型別也是如此。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/360823.html
