我有一个 PresenterFactory,它基于 Role 参数创建 Presenter 类。具体来说,角色参数是我无法控制的外部类(IE 3rd 方。)
我的工厂看起来像这样:
public class PresenterFactory {
public Presenter CreatePresenter(Role role, ...) {
if (role.IsUserA("Manager")) {
return new ManagerPresenter(...)
}
if (role.IsUserA("Employee")) {
return new EmployeePresenter(...)
}
}
}
我被困在如何为此编写单元测试,因为创建Role
对象会强制访问数据库。我以为我可以模拟这个对象。我的测试看起来像这样:
public void TestPresenterFactory()
{
var mockRole = new Mock<Role>();
mockRole .Setup(role=> role.IsUserA("Manager"))
.Returns(true)
.AtMostOnce();
PresenterFactory.CreatePresenter(mockRole.Object, ...);
mockUserInfo.VerifyAll();
}
但是我收到一个ArguementException
:
不可覆盖成员上的无效设置:role=> role.IsUserA("Manager")
我不确定去哪里,当然可以使用一些课程修正。我究竟做错了什么?