【发布时间】:2011-03-07 08:03:43
【问题描述】:
我正在玩一些单元测试和模拟。我正在尝试验证是否在我的方法中调用了某些代码。我认为我不理解嘲笑的 Verify 部分正确,因为我只能验证 main 方法.. 这很愚蠢,因为无论如何我 Act 就是这样。
我正在尝试测试我的逻辑是否正常工作 - 所以我想我使用验证来查看方法中的某些步骤是否已达到并实施。
让我们用这个例子来突出我做错了什么。
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,但我对任何事情都很满意。
【问题讨论】:
标签: .net asp.net mocking moq rhino-mocks