Я совершенно новичок в Moq и пока что только что следил за примерами, описанными в Pro asp.net framework . В книге, некоторая грязь помещается в контроллер, например получение клиента по идентификатору - возможно, для краткости. Я решил разместить такую функциональность в репозитории и просто вызвать ее в контроллере, например, «customerRepository.GetCustomerByID (id);» Как лучше всего протестировать что-то подобное? Я создал следующий модульный тест, который по какой-то причине возвращает пустой Customer.
List<Customer> customer = new List<Customer>();
customer.Add(new Customer { CustomerId = 1, FirstName = "test", LastName = "wods", Sex = true });
mockRepos = new Moq.Mock<ICustomerRepository>();
mockRepos.Setup(x => x.Customers).Returns(customer.AsQueryable());
CustomersController controller = new CustomersController(mockRepos.Object);
//Act
ViewResult results = controller.Edit(1);
var custRendered = (Customer)results.ViewData.Model;
Assert.AreEqual(2, custRendered.CustomerId);
Assert.AreEqual("test", custRendered.FirstName);
И контроллер
public ViewResult Edit(int id)
{
Customer customer = customerRepository.GetCustomerByID(id);
return View(customer); //this just returns null??
}
Я думаю, что веду себя очень глупо, но любая помощь могла бы будьте очень признательны.