我的一個控制器動作(在Ajax請求中被調用的動作)正在將URL返回給客戶端,以便它可以進行重定向。我正在使用,Url.RouteUrl(..)并且在我的單元測試期間由于Controller.Url未預先填寫參數(shù)而導致失敗。我嘗試了很多操作,其中包括嘗試存根UrlHelper(失?。┑钠渌椒ǎ⑹謩觿?chuàng)建了UrlHelper具有RequestContext存根HttpContextBase(在RouteCollection.GetUrlWithApplicationPath通話中失?。┑?。我已經搜索過Google,但在該主題上幾乎找不到任何內容。我在執(zhí)行Url.RouteUrlController動作時是否正在做一些非常愚蠢的事情?有更容易的方法嗎?更糟糕的是,我希望能夠在單元測試中測試返回的URL-實際上,我只想知道它已重定向到正確的路由,但是由于我返回的是URL,而不是路由,我想控制要解析的URL(例如通過使用stubbed RouteCollection)-但我很樂意讓我的測試通過。
3 回答

料青山看我應如是
TA貢獻1772條經驗 獲得超8個贊
通過@ eu-ge-ne建立答案,這對我有很大幫助:
我有一個執(zhí)行重定向的ActionResult以及一個帶有FormCollection參數(shù)的UpdateModel調用。為了使UpdateModel()正常工作,我必須將其添加到模擬的HttpRequestBase中:
FormCollection collection = new FormCollection();
collection["KeyName"] = "KeyValue";
request.Setup(x => x.Form).Returns(collection);
request.Setup(x => x.QueryString).Returns(new NameValueCollection());
要測試重定向的URL是否正確,您可以執(zhí)行以下操作:
RedirectResult result = controller.ActionName(modelToSubmit, collection) as RedirectResult;
Assert.AreEqual("/Expected/URL", result.Url);
- 3 回答
- 0 關注
- 745 瀏覽
添加回答
舉報
0/150
提交
取消