Параметры MoqAutoMocker и примитивного конструктора
Я заядлый пользователь StructureMap MoqAutoMocker, но иногда мы сталкиваемся с нашим "старым другом". Предположим, класс "Валидатор"
public class Validator
{
private string _connectionString;
private IEventMachine _eventMachine;
public Validator(string connectionString, IEventMachine eventMachine)
{
_connectionString = connectionString;
_eventMachine = eventMachine;
}
}
Класс, приведенный выше, на самом деле не имеет значения, на самом деле, он, вероятно, вызовет удивление, я просто делаю это для этого поста, так как я не мог придумать лучшего примера с кончика моего носа. Дело в том, что он содержит смесь примитивных типов данных (connectionString) и интерфейсов (eventMachine) - во время модульного тестирования я обычно устанавливаю свои ожидания, такие как:
[TestMethod]
public void Validate_WhenCalled_PublishesEnterEvent()
{
// Arrange
var Instance = new MoqAutoMocker<Validator>();
var eventMachineMock = Mock.Get(AutoMock.Get<IEventMachine>());
// Act
Instance.Validate();
// Assert
eventMachineMock.Verify(m => m.Publish( It.IsAny<string>(), Times.Once());
}
Итак, вопрос заключается в следующем: вышеописанное не будет работать, потому что MoqAutoMocker не может принять аргумент connectionString, поскольку он не может найти интерфейс для него (или любого другого примитива в этом отношении). Мой вопрос прост: есть ли способ сообщить MoqAutoMocker, каким должно быть это значение?
Заранее спасибо за чтение.
1 ответ
Нет, я не верю, что есть способ - это ограничение AutoMocker.
Мы склонны избегать примитивных параметров конструктора в пользу объектов настроек (см. Как мы управляем конфигурацией приложения)