2014-01-09 57 views
2

我使用Moq的MockRepository.Of <>方法來模擬各種方法來測試。當我通過Where子句將多個方法設置鏈接在一起時,它會在模擬方法返回時起作用。這顯然是由於Where需要布爾表達式。你可以使用這種模式爲沒有返回變量的方法設置模擬嗎?Moq.MockRepository.Of()使用方法有void時返回

var mockRepository = new MockRepository(MockBehavior.Strict); 
var debitCardBinManager = mockRepository.Of<IDebitCardBinManager>() 
       .Where(mgr => mgr.GetEffectiveDateBuffer() == 35) 
       .Where(mgr => mgr.AddAction(It.IsAny<DateTime>())) 
       .First(); 

從這個例子中可以設置GetEffectiveDateBuffer方法,因爲它會返回一個整數。然而,AddAction不能,因爲它有一個無效返回(編譯錯誤是不能將'void'轉換爲'bool')。然而我想要通過模式來設置它。有什麼建議麼?

回答

0

您不需要爲AddAction方法添加Where,因爲它具有void返回類型。如果您將MockBehaviour更改爲Loose,那麼它會自動模擬該方法,但如果您正在驗證該方法,則無法工作。

+0

謝謝。我確實需要嚴格的行爲並驗證該方法。所以看起來我必須使用MockRepository.Create方法併爲每個方法調用Setup。 – rmunson

相關問題