2012-04-27 41 views
2

有沒有一種方法可以將回調附加到模擬的每個方法,而無需設置每種方法?例如。爲每個方法調用使用設置回調MOQ

var serviceMock = new Mock<IService>();  
var count = 0; 

//method does not exist, but you get the picture 
serviceMock.CallbackAllMethods(() => { count++; throw new WebException()};) 
+0

只是有趣的 - 爲什麼你添加回調一些對象的所有方法? – 2012-04-27 14:18:18

+0

我正在使用Castle.DynamicProxy將重試行爲添加到類的每個方法調用中。我想編寫一個用於反射的測試來調用每個方法並聲明重試邏輯正確執行。我不在乎每個方法的參數是什麼,只是它被調用。所以,簡而言之,我正在測試攔截器。 – 2012-04-27 14:27:02

回答

1

AutoFixture與Moq有很好的集成,並且會自動設置這樣的方法。

有一個很好的介紹here on Mark Seemann's blog

+0

謝謝,看起來有趣,不知道如果(或者如何)它做我所需要的。我想創建一個模擬,並讓每個方法調用它拋出一個異常,但我不想要設置每個方法? – 2012-04-27 13:59:38

+1

如果你只是需要每種方法來拋出一個異常,你可以創建一個嚴格的模擬,它會拋出任何不符合期望的方法。 – scottm 2012-04-27 14:10:03

+0

好點,但我需要在委託中做一些其他的工作,並且拋出各種類型的異常。問題編輯相應。 – 2012-04-27 14:14:32