Я пытаюсь проверить действие контроллера, которое принимает модель представления и создает новую запись. Здесь действие контроллера:Модуль Test MVC 5 Controller Создать действие с единицей работы и репозиторием
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(ContactViewModel viewModel)
{
if (!ModelState.IsValid)
return View("Create", viewModel);
_unitOfWork.Contacts.Add(Mapper.Map(viewModel, new Contact()));
_unitOfWork.Complete();
return RedirectToAction("Index");
}
И испытательная установка:
[TestClass]
public class ContactControllerTests
{
private ContactsController _controller;
private Mock<IContactRepository> _mockRepository;
private string _userId;
private Mock<IUnitOfWork> _mockUoW;
[ClassInitialize]
public static void Init(TestContext context)
{
Mapper.Initialize(c => c.AddProfile<MappingProfile>());
}
[TestInitialize]
public void TestInitialize()
{
_userId = "1";
_mockRepository = new Mock<IContactRepository>();
_mockUoW = new Mock<IUnitOfWork>();
_mockUoW.SetupGet(u => u.Contacts).Returns(_mockRepository.Object);
_controller = new ContactsController(_mockUoW.Object);
_controller.MockCurrentUser(_userId, "[email protected]");
}
[TestMethod]
public void CreatePost_ValidValuesSubmitted_ShouldCallComplete()
{
var viewModel = new ContactViewModel()
{
FirstName = "a",
LastName = "b"
};
_controller.Create(viewModel);
_mockRepository.Object.GetContacts(_userId).Should().HaveCount(1);
}
}
Испытательное устройство всегда возвращает количество 0, а я надеюсь, что это будет 1. Я довольно новыми для TDD и я реализовал единица работы и образец хранилища, как показано на курсе Моша Хамедани по адресу: https://app.pluralsight.com/library/courses/full-stack-dot-net-developer-architecture-testing/table-of-contents
Это не TDD (Test * Driven *), если вы пытаетесь проверить уже написанный фрагмент кода ... –