Question

Je l'action du contrôleur suivant:

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);
}

Et le test correspondant:

[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);
}

Dans l'interface graphique NUnit je reçois l'erreur suivante:

MyProject.Web.UnitTests.Controllers.NewsControllerTests.Edit_should_render_view: MvcContrib.TestHelper.AssertionException: était MyProject.Web.Common.ViewData.NewsEditModel mais attendu MyProject.Web.Common.ViewData.NewsEditModel

Je ne sais pas comment écrire le test unitaire correspondant. Quelqu'un peut-il me aider?

Était-ce utile?

La solution

Votre test compare deux instances différentes de NewsEditModel - une instance que vous créez dans votre code de test, et l'autre qui est créé dans la méthode d'action.

Si vous voulez examiner les valeurs de propriétés de modèle dans le cadre de votre test, vous pouvez faire ceci:

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top