我想模擬ASP.Net MVC的Ajax.IsRequest()方法。我發現如何做到這一點,以便它返回true:嘲笑Ajax.IsRequest返回False
Expect.Call(_myController.Request.Headers["X-Requested-With"]).Return("XMLHttpRequest").Repeat.Any();
這個作品,並返回true。現在我需要測試代碼的其他分支。我怎樣才能嘲笑它返回false?我曾嘗試完全移除模擬,它失敗:
System.NullReferenceException:未設置爲一個 對象的實例對象 參考]
如果我做的:
Expect.Call(_templateReportController.Request["X-Requested-With"]).Return(null).Repeat.Any();
它失敗並出現相同的錯誤。
整個測試:
/// <summary>
/// Tests the Edit Action when calling via Ajax
/// </summary>
[Test]
public void Test_Edit_AjaxRequest()
{
Group group = new Group();
group.ID = 1;
group.Name = "Admin";
IList<Group> groupList = new List<Group>() { group };
Definition def = new Definition();
def.ID = 1;
def.Name = "Report";
def.LastModified = DateTime.UtcNow;
def.Groups.Add(group);
using (_mocks.Record())
{
Expect.Call(_myController.Request["X-Requested-With"]).Return("XMLHttpRequest").Repeat.Any();
Expect.Call(_DefBiz.GetAll<Group>()).Return(groupList);
Expect.Call(_DefBiz.Get<Definition>(1)).Return(def);
}
myController.DefAccess = _DefBiz;
PartialViewResult actual;
using (_mocks.Playback())
{
actual = (PartialViewResult)myController.Edit(1);
}
}
有何意見? 乾杯
請參閱:http://stackoverflow.com/questions/2929058/newbie-question-on-mvccontrib-testhelpers – PatrickSteele 2010-06-18 11:34:08
正如我所說,我可以得到它來嘲笑它返回true,這個問題的代碼示例所做的,但我似乎無法讓它返回false。 – Damien 2010-06-18 13:22:26
你可以粘貼整個測試嗎? – Grzenio 2010-06-21 12:21:05