0

我有以下控制器操作:

public ActionResult Edit(int id)
{
   var news = newsRepository.GetNewsByID(id);

   Mapper.CreateMap<News, NewsEditModel>();
   var newsEditModel =
      (NewsEditModel)Mapper.Map(news, typeof(News), typeof(NewsEditModel));

   return View(newsEditModel);
}

以及相应的测试:

[Test]
public void Edit_should_render_view()
{
   // Arrange
   var id = 1;
   var newsEditModel = new NewsEditModel();

   // Act
   var actual = sut.Edit(id);

   // Assert
   actual
      .AssertViewRendered()
      .WithViewData<NewsEditModel>()
      .ShouldBe(newsEditModel);
}

在 NUnit GUI 中,我收到以下错误:

MyProject.Web.UnitTests.Controllers.NewsControllerTests.Edit_should_render_view: MvcContrib.TestHelper.AssertionException : 是 MyProject.Web.Common.ViewData.NewsEditModel 但预期 MyProject.Web.Common.ViewData.NewsEditModel

我不知道如何编写相应的单元测试。有人可以帮帮我吗?

4

1 回答 1

1

您的测试正在比较两个不同的实例NewsEditModel——一个是您在测试代码中创建的实例,另一个是在 action 方法中创建的实例。

如果您想在测试中检查模型属性值,您可以这样做:

var model = actual
  .AssertViewRendered()
  .WithViewData<NewsEditModel>();

// Check that model is not null
Assert.That(model, Is.Not.Null);  

// Check that model ID is same as passed into action method
Assert.That(model.Id, Is.EqualTo(1));
// or alternatively ...
model.Id.ShouldBe(1);
于 2011-01-19T11:48:05.857 回答