2014-10-30 4 views
1

aQuestion of Implementation.Использование Moq для тестирования состояния и бездействия

У меня есть метод Builder FooBuilder(), который вызывает много вещей, чтобы создать модель FooModel.

У FooBuilder() есть определенные методы, которые зависят друг от друга, например, Tire (barBuilder), вызывающие BarBuilder, и многие из них не работают, как SteeringWheel, которые не зависят от любого порядка выполнения.

Пример:

[Test] 
     public void then_should_build_steering_wheel_model() 
     { 
      // Arrange 
      var FooBuilder = new FooBuilder(); 
      var itemKey = new ItemKey{Vendor = 10}; 

      //Here's the setup of BarBuilder for other classes elsewhere 
      var BarBuilder = new Mock<IBarBuilder>(); 
      BarBuilder.Setup(builder => builder.BuildUpBarMaster(itemKey.Vendor)).Returns(BarModel); 


      // Act 
      FooBuilder.CreateSteeringWheelModel(itemKey.vendor); 

      // Assert 
      FooBuilder.Verify(builder => builder.BuildUpSteeringWheelModel(itemKey.vendor)); 

Есть ли способ построить тесты для части способа, которые являются лицами без гражданства (SteeringWheel), не делая установку для сохраняющих состояния частей (BarBuilder)?

ответ

0

Решение, которое я нашел для этого, чтобы BarBuilder не возвращал экземпляр модели BarBuilder, а скорее примитивный тип, который необходимо передать по линии.

Примитивы позволяют Moq успешно игнорировать ошибки относительно нулевых зависимостей метода относительно нулевых объектов, которые я получал. Затем Moq перейдет в 0 вместо этого и запустит программу, как предполагалось, оставив меня только для использования. Установить для вещей, на которых я на самом деле нужно.

Смежные вопросы