Параметры MoqAutoMocker и примитивного конструктора - PullRequest
3 голосов
/ 11 февраля 2011

Я заядлый пользователь 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 Ответ

2 голосов
/ 11 февраля 2011

Нет, я не верю, что есть способ - это ограничение AutoMocker.

Мы склонны избегать примитивных параметров конструктора в пользу объектов настроек (см. Как мы обрабатываем конфигурацию приложения )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...