簡體   English   中英

如何模擬返回void的方法,但修改了使用Moq傳入的引用類型

[英]How to mock a method that returns void but modifies the reference type passed in with Moq

我有一個Interface

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

我想用Moq來模擬這個,這顯然很容易。 我遇到的問題是我希望在模擬調用之后修改傳入的Check (因為它是一個引用)。 如您所見, Check只是一個簡單的POCO。

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

理想情況下,我想在傳入的Check上更改Status屬性的值。

這可能嗎?

使用Callback方法。 我想它會是這樣的:

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

你可以省去大括號{ }和第一個分號; 如果你只需要一個任務。

認為你可以使用ref關鍵字來獲得你想要的東西:

方法參數上的ref方法參數關鍵字使方法引用傳遞給方法的同一變量。 當控制傳遞回調用方法時,對方法中的參數所做的任何更改都將反映在該變量中。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM