Этот тест должен проверить, что я могу вернуть объект ViewModel, создав клиента и вызвав метод контроллера Details ().
[TestMethod()]
public void Can_View_AccountDetails()
{
AccountController target = new AccountController(null, null, null, null);
target.customer = new Customer { Id = 4, Active = true, BillingAddress_Id=1, ShippingAddress_Id=2 };
// Act
ActionResult result = target.Details();
// Assert
var resultData = ((ViewResult)result).ViewData.Model as AccountViewModel;
Assert.IsInstanceOfType(resultData, (typeof(AccountViewModel)));
}
'customer' является членом базового класса контроллера, который затем назначается в Initialize ().Изначально я ничего не мог назначить ему, но установив его как «открытый», а не «защищенный», я смог использовать его в своем тесте и избегать попытки вызова метода Initialize () базового класса.
EDIT: 'customer' заполняется из объекта Repository, внедренного в конструктор базового класса.
Это правильный способ сделать это?Кажется, что-то неправильно менять уровень доступности, чтобы заставить тест работать.
Кроме того, хотя я пытаюсь использовать Moq для создания своих тестов, я на самом деле не делаю здесь никакой насмешки.что, опять же, не кажется правильным.