0
我想验证何时调用AuthenticateUserAsync()(它具有void的返回类型),以引发相应的操作。如何在调用方法时验证是否引发了操作(使用Moq进行单元测试)
这里我目前的做法:
var mock = new Mock<ILoginPresenter>();
mock.Setup(x => x.AuthenticateUserAsync(username, password))
.Raises(x => x.UserPassesAuthentication += null, new LoginEventArgs(thing));
的问题是,当这个测试运行,我得到一个错误:
Could not locate event for attach or detach method Void set_UserPassesAuthentication(System.Action`1[Common.View.LoginEventArgs]).
好像我在与.Raises问题的呼吁一个行动而不是一个事件。
有什么建议吗?
编辑
下面是ILoginPresenter定义:
public interface ILoginPresenter
{
Action<LoginEventArgs> UserPassesAuthentication { get; set; }
Action UserFailedAuthentication { get; set; }
void AuthenticateUserAsync(string user, string password);
bool IsLoginFabVisible(int userTextCount, int passwordTextCount);
}
回你可以显示'ILoginPresenter' – Nkosi
@Nkosi代码定义发布 – kformeck
'.Raises'用于事件。你试图用一个不起作用的动作来调用它。您需要模拟该操作并在来自'AuthenticateUserAsync'设置的回调中调用它 – Nkosi