Я заядлый пользователь 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, каким должно быть это значение?
Заранее спасибо за чтение.