J'utilise ASP.NET MVC 2, NUnit, Moq et MVC Contrib. J'ai écrit mon premier test unitaire et j'ai quelques questions concernant ce test. Mon scénario est que j'ai une vue Index. Sur cette vue, j'ai une grille qui affiche toutes les nouvelles.Pointeurs nécessaires lors du premier test avec NUnit et MVC Contrib
Voici ma classe INewsRepository:
public interface INewsRepository
{
IEnumerable<News> FindAll();
}
Ma classe de test avec la méthode d'essai:
public class NewsControllerTest :TestControllerBuilder
{
private Mock<INewsRepository> mockNewsRepository;
private NewsController newsController;
[SetUp]
public void Init()
{
mockNewsRepository = new Mock<INewsRepository>();
newsController = new NewsController(mockNewsRepository.Object);
InitializeController(newsController);
}
[Test]
public void NewsController_Index()
{
// Arrange
var news = new Mock<IEnumerable<News>>();
mockNewsRepository.Setup(r => r.FindAll()).Returns(news.Object).Verifiable();
// Act
ActionResult actual = newsController.Index();
// Assert
mockNewsRepository.Verify();
actual
.AssertViewRendered()
.ForView("Index")
.WithViewData<News[]>()
.ShouldBe(news);
}
}
Mon point de vue:
public ActionResult Index()
{
FakeNewsRepository fakeNewsRepository = new FakeNewsRepository();
IEnumerable<News> news = fakeNewsRepository.FindAll();
return View(news);
}
je besoin de quelques conseils sur la façon dont Je l'ai fait. Suis-je dans la bonne direction? Que devrais-je ajouter, que devrais-je omettre? Je veux faire des tests unitaires, est-ce que je mélange avec des tests d'intégration? Tout conseil supplémentaire serait apprécié.
Quand je lance ce test dans la console GUI NUnit je reçois une erreur de retour et I'mnot sûr de ce que cela signifie:
MyProject.Web.Tests.Controllers.NewsControllerTest.NewsController_Index:
Moq.MockVerificationException : The following setups were not matched:
INewsRepository r => r.FindAll()
Dans votre code, vous avez un nom de variable pour un contrôleur appelé _sut. Pourquoi avez-vous appelé ça? –
Sujet en cours de test. De cette façon, il est clair quel est le type testé. –
Y at-il autre chose que vous pouvez commenter lorsque je teste mes contrôleurs? Est-ce que je fais beaucoup dans un test, trop peu? Quels pointeurs pouvez-vous me donner lors du test des contrôleurs? –