2013-02-02 49 views
7

傳遞的引用類型的方法我有一個Interface如何嘲笑返回void但修改與起訂量

public interface IRequester 
{ 
    void Check(Check check); 
} 

我想嘲笑這個使用Moq這顯然是容易的。我遇到的問題是我希望傳入的Check在模擬呼叫後被修改(因爲它是一個參考)。正如你所看到的Check只是一個簡單的POCO。

public class Check 
{ 
    public string Url { get; set; } 
    public int Status { get; set; } 
} 

理想我想改變Status財產上的Check傳入的值。

這可能嗎?

回答

15

使用Callback方法。我認爲這將是這樣的:

yourMock.Setup(x => x.Check(It.IsAny<Check>())) 
    .Callback((Check c) => { c.Status = 1234567; }); 

你可以離開了括號{ }和第一分號;如果你只需要一個任務。

+0

非常感謝。 – baynezy

+0

好問題和很好的答案!這非常有幫助,謝謝。 – Louis

+0

正是我需要的! – DubMan

0

認爲你可以使用ref關鍵字得到你想要的東西:

上的方法參數裁判方法參數關鍵字使方法 指已傳遞到方法的同一個變量。任何 在控制權返回給調用方法時,對該方法中的參數所做的更改將反映在該變量中 變量中。

http://msdn.microsoft.com/en-us/library/14akc2c7(v=vs.71).aspx