Тестирование ASP.NET MVC View Model
Я использую 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
Нет, он не тестирует (только?) структуру. Он проверяет, что выполнение результатов действия в ViewModel состоит из не-нулевой коллекции из того же подсчета, что и в макете.
Вы можете упростить последнее условие в
Assert.IsTrue(viewModel.Count() == posts.Count);
или даже
Assert.IsTrue(viewModel.Count() == 2);
Я имею в виду это unit test, это нормально, чтобы там были какие-то жестко закодированные значения.