我有以下控制器操作:
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
我不知道如何编写相应的单元测试。有人可以帮助我吗?
答案 0 :(得分:1)
您的测试是比较NewsEditModel
的两个不同实例 - 您在测试代码中创建的一个实例,以及在操作方法中创建的另一个实例。
如果要在测试中检查模型属性值,可以执行以下操作:
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);