Тестирование ASP.NET MVC View Model - PullRequest
       10

Тестирование ASP.NET MVC View Model

16 голосов
/ 14 октября 2009

Я использую Nunit и Moq для тестирования моего решения asp.net mvc. Это хороший способ проверить, что модель, переданная в представление, является правильным объектом / коллекцией?

[Test]
public void Start_Page_Should_Display_Posts()
{
    var posts = new List<Post> {new Post {Id = 1}, new Post {Id = 2}};

    var mock = new Mock<IRepository>();
    mock.Setup(x => x.FindAll<Post>()).Returns(posts.AsQueryable());

    var controller = new PostsController(mock.Object);
    var result = controller.Index(null) as ViewResult;
    var viewModel = controller.ViewData.Model as IEnumerable<Post>;

    Assert.IsNotNull(result);
    Assert.IsTrue(viewModel.Count() == mock.Object.FindAll<Post>().Count());
}

Я понимаю, что такого рода тестирование фреймворка, но, надеюсь, вы поймете мою точку зрения. Могу ли я доверять этому тесту?

В настоящее время я немного устала, поэтому не стесняйтесь просить проработки.

Спасибо

1 Ответ

14 голосов
/ 14 октября 2009

Нет, это не тестирует (только?) Фреймворк. Он проверяет, что выполнение действия приводит к ViewModel, состоящему из ненулевого набора из того же числа, что и в макете.

Вы могли бы упростить последнее условие до

Assert.IsTrue(viewModel.Count() == posts.Count);

или даже

Assert.IsTrue(viewModel.Count() == 2);

Я имею в виду, что это юнит-тест, нормально иметь какие-то жестко закодированные значения.

...