我有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; }
}
理想情况下,我想更改传递的Status
上Check
属性的值。
这可能吗?
答案 0 :(得分:15)
使用Callback
方法。我认为这将是:
yourMock.Setup(x => x.Check(It.IsAny<Check>()))
.Callback((Check c) => { c.Status = 1234567; });
如果您只需要一个作业,则可以省略大括号{ }
和第一个分号;
。
答案 1 :(得分:0)
认为你可以使用ref关键字来获得你想要的东西:
方法参数上的ref方法参数关键字会导致方法 引用传递给方法的相同变量。任何 对方法中的参数所做的更改将反映在该方法中 当控制传递回调用方法时变量。
http://msdn.microsoft.com/en-us/library/14akc2c7(v=vs.71).aspx