[英]How to mock a method that returns void but modifies the reference type passed in?
[英]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.