У меня есть PresenterFactory, которая создает классы Presenter на основе параметра Role. В частности, параметр Role является внешним классом, который я не могу контролировать (IE Сторонний.)
Моя фабрика выглядит примерно так:
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")
Я не уверен, куда идти, и уверен, что мог бы использовать некоторую коррекцию курса. Что я делаю не так?