Я играю с некоторыми юнит-тестами и издевательствами.Я пытаюсь проверить, что какой-то код в моем методе был вызван.Я не думаю, что я понимаю Verify
часть насмешливого права, потому что я могу только когда-либо Проверять основной метод ... который глуп, потому что это то, что я Act
в любом случае.
Я пытаюсьчтобы проверить, что моя логика работает - поэтому я подумал, что я использую Verify, чтобы увидеть, что определенные шаги в методе были достигнуты и выполнены.
Позволяет использовать этот пример, чтобы выделить то, что я делаю неправильно.
public interface IAuthenticationService
{
bool Authenticate(string username, string password);
SignOut();
}
public class FormsAuthenticationService : IAuthenticationService
{
public bool Authenticate(string username, string password)
{
var user = _userService.FindSingle(x => x.UserName == username);
if (user == null) return false;
// Hash their password.
var hashedPassword = EncodePassword(password, user.PasswordSalt);
if (!hashedPassword.Equals(password, StringComparison.InvariantCulture))
return false;
FormsAuthentication.SetAuthCookie(userName, true);
return true;
}
}
Итак, теперь я хочу убедиться, что
EncodePassword
был вызван. FormsAuthentication.SetAuthCookie(..)
был вызван.
Теперь, я не забочусь о последствиях обоих.И что более важно, я не хочу тестировать эти методы.Это должно быть обработано в другом месте.Что я должен сделать, так это убедиться, что эти методы были вызваны и ... если это возможно ... ожидаемый результат был возвращен.
Правильное ли это понимание того, что означает "Подтвердить" с насмешкой?
Если так, может кто-нибудь показать мне, как я могу это сделать.Желательно с moq
, но я чем-нибудь доволен.