如何模拟返回void的方法,但修改了使用Moq传入的引用类型

bay*_*ezy 7 c# unit-testing moq

我有一个 Interface

public interface IRequester
{
    void Check(Check check);
}
Run Code Online (Sandbox Code Playgroud)

我想用Moq这很容易嘲笑这个.我遇到的问题是我希望在模拟Check调用之后修改传入(因为它是一个引用).你可以看到Check只是一个简单的POCO.

public class Check
{
    public string Url { get; set; }
    public int Status { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想更改传入的Status属性的值Check.

这可能吗?

Jep*_*sen 17

使用该Callback方法.我想它会是这样的:

yourMock.Setup(x => x.Check(It.IsAny<Check>()))
    .Callback((Check c) => { c.Status = 1234567; });
Run Code Online (Sandbox Code Playgroud)

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