7

我有一个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

这可能吗?

4

2 回答 2

18

使用Callback方法。我认为这将是这样的:

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

如果您只需要一个作业,则可以省略大括号{ }和第一个分号。;

于 2013-02-02T14:56:48.153 回答
0

认为您可以使用 ref 关键字来获得您想要的东西:

方法参数上的 ref 方法参数关键字导致方法引用传递给该方法的相同变量。当控制权传递回调用方法时,对方法中的参数所做的任何更改都将反映在该变量中。

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

于 2013-02-02T14:39:38.603 回答