我想测试我的控制器中的_eventManager上的“Create”方法被调用。当我运行我的测试,我得到以下异常:Moq异常:验证需要参数的方法调用
试验方法Baigent.TheDoNation.Application.Tests.EventControllerTest.Create_Post_IfModelIsValidRedirectToSuccessfullyCreatedViewOccurs抛出异常信息:System.ArgumentException:无效设置一个非重写的成员上: M =>米.CreateEvent(It.IsAny(),It.IsAny())。
用于控制器的代码是:
public ActionResult Create(Event eventObject, FormCollection collection)
{
if (ModelState.IsValid)
{
_eventManager.CreateEvent(eventObject, User.Identity.Name);
return RedirectToAction("SuccessfullyCreated", new { });
}
// Invalid - redisplay form with errors
return View(GetEventViewModel(eventObject));
}
的_eventManager字段被在构造方法设置。我的测试是:
var eventManagerMock = new Mock<EventManager>(new FakeEventsRepository());
eventManagerMock.Setup(m => m.CreateEvent(It.IsAny<Event>(), It.IsAny<String>())).Verifiable("No call to CreateEvent on the EventManager was made");
var eventController = new EventController(eventManagerMock.Object);
var newEvent = new Event {Name = "Test Event", Date = DateTime.Now, Description = "Test description"};
// Act
var result = eventController.Create(newEvent, new FormCollection()) as RedirectToRouteResult;
// Assert
eventManagerMock.Verify(m => m.CreateEvent(It.IsAny<Event>(), It.IsAny<String>()));
Assert.IsNotNull(result, "RedirectToRouteResult should be returned");
Assert.AreEqual("SuccessfullyCreated", result.RouteValues["action"], "Redirect should be to SuccessfullyCreated view");
请帮忙!
谢谢你,你是对的。在发布后10分钟,我实际上得出了这个结论 - 这是一个急于尝试的帖子。 – user376085 2010-06-30 11:31:47