У меня есть метод CreateAccount (...), который я хочу для модульного тестирования. В основном он создает объект учетной записи и сохраняет его в БД, а затем возвращает вновь созданную учетную запись. Я издеваюсь над репозиторием и ожидаю вызова Insert (...). Но метод Insert ожидает объект Account.Правильное взаимодействие службы тестирования/взаимодействия с репозиторией
Этот тест проходит, но это не кажется правильным, потому что CreateAccount создает учетную запись, и я создаю учетную запись для ожидаемого вызова Mock'а (два отдельных экземпляра учетной записи). Каков был бы правильный способ протестировать этот метод? Или я неправильно создаю учетные записи, используя этот метод?
[Fact]
public void can_create_account()
{
const string email = "[email protected]";
const string password = "password";
var accounts = MockRepository.GenerateMock<IAccountRepository>();
accounts.Expect(x => x.Insert(new Account()));
var service = new AccountService(accounts);
var account = service.CreateAccount(email, password, string.Empty, string.Empty, string.Empty);
accounts.VerifyAllExpectations();
Assert.Equal(account.EmailAddress, email);
}
А вот CreateAccount Метод:
public Account CreateAccount(string email, string password, string firstname, string lastname, string phone)
{
var account = new Account
{
EmailAddress = email,
Password = password,
FirstName = firstname,
LastName = lastname,
Phone = phone
};
accounts.Insert(account);
return account;
}
Извините, я должен был опубликовать фактический метод, который я тестировал, duh. Я обновил OP. – mxmissile
Я не вижу, как newAcc и учетная запись будут одинаковыми, поскольку создаются 2 отдельных экземпляра. Или AreSame() просто сравнивает тип? – mxmissile
Правильно. AreSame сравнивает экземпляры объектов, поэтому мой первоначальный ответ выше неверен. С тех пор я добавил некоторые исправления (сверху) – jpoh