我在使用UpdateModel()方法测试类时遇到了问题。我得到了System.NullReferenceException。我使用NUnit。这是我在HomeController中的方法:
public ActionResult ProjectsEdit(Projects model)
{
var projects = db.Projects.First();
projects.Content = model.Content;
UpdateModel(projects);
db.SaveChanges();
return RedirectToAction("Projects");
}下面是测试类:
[Test]
public void ProjectsEditPostTest()
{
var routeData = new RouteData();
var httpContext = MockRepository.GenerateStub<HttpContextBase>();
//var httpContext = new FakeHttpContext("Edit");
FormCollection formParameters = new FormCollection();
ControllerContext controllerContext =
MockRepository.GenerateStub<ControllerContext>(httpContext,
routeData,
controller);
controller.ControllerContext = controllerContext;
// Act
string newContent = "new content";
Projects projects = new Projects { ID = 1, Content = newContent };
controller.ProjectsEdit(projects);
// Assert
Assert.AreEqual(newContent, controller.db.Projects.First().Content);
}我该怎么做才能让它工作呢?
发布于 2011-11-14 15:19:31
只需在断言阶段添加以下行:
controller.ValueProvider = formParameters.ToValueProvider();它将值提供程序分配给UpdateModel方法所依赖的控制器。这个值提供程序与您定义的FormCollection变量相关联,它允许您传递一些值。
您还可以检查使用MvcContrib.TestHelper来简化排列阶段的similar answer。
https://stackoverflow.com/questions/8118303
复制相似问题