2014-10-30 106 views
1

執行的問題。使用Moq進行有狀態和無狀態測試

我有一個Builder方法FooBuilder(),它調用很多東西來建立一個FooModel模型。

FooBuilder()具有相互依賴的某些方法,如調用BarBuilder的Tire(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)); 

是否有任何的方式來建立測試爲一個片是無狀態(的SteeringWheels)而不做設置有狀態份(BarBuilder)的方法的?

回答

0

我發現這個解決方案使BarBuilder不會返回BarBuilder模型的實例,而是需要傳遞給該線的原始類型。

原語允許Moq成功地忽略關於我正在接收的空對象的空方法依賴關係的錯誤。然後Moq會傳入0來代替,並按預期運行程序,讓我只使用.Setup,其中我實際上需要