2012-03-20 56 views
1

我有一個遺留系統,我正在進行重構。我爲Generate()方法的委託參數提供給Moq的是什麼?

我有一個對象基本如下:

public class SUT 
{ 
    public delegate SaveStuff(SomeObject obj); 
    public void Generate(SaveStuff saver) 
    { 
    // Do stuff 
    var obj = new SomeObject(); 
    saver(obj); 
    } 
} 

我很新的使用起訂量,並希望count次「保護」叫的數量。

我已經看到了很多的例子在這裏SO,但我難倒如何設置測試

[Test] 
public void TestDelegateCall() 
{ 
    var sut = new SUT(); 
    // Prepare SUT's State... 

    var callCount = 0; 
    sut.Generate(??); 
    Assert.AreEqual(callCount,2); 
} 

善有善報,其中?是?

回答

3

我不知道,你需要在這裏使用的起訂量,我相信你可以只是做以下,並利用匿名方法和封閉:)

var callCount = 0 
sut.Generate(obj=>callCount++); 

如果不工作,那麼你可以只使用明確的代表設置:

var callCount = 0 
SaveStuff actionCounter = delegate(SomeObject obj) 
    { 
     callCount++; 
    }; 
sut.Generate(actionCounter); 
+0

我無法得到該編譯,但它讓我在我需要去的地方。 'SaveStuff actionCount = delegate(SomeObject obj){callCount ++; };'工作。感謝您指點我正確的方向。 – 2012-03-20 02:06:56

+0

甜!在改變你的簡單例子之後,R#幫助我使它更加清潔,因爲'sut.Generate(obj => {callCount ++;});'這幫助我解決了另一個問題。你剛剛加深了我的理解。謝謝! – 2012-03-20 02:21:32

+0

我已經更新了我的答案,以便它應該與匿名方法一起使用,如果您希望它的行數更少。但是,我也更新了代碼以使用舊的委託方法。我測試了兩個,並且都應該工作。你甚至不需要你最後的評論中的括號:) – 2012-03-20 02:22:26

相關問題