首页 > 后端开发 > C++ > Moq 可以为输出参数赋值吗?

Moq 可以为输出参数赋值吗?

DDD
发布: 2025-01-18 05:31:13
原创
734 人浏览过

Can Moq Assign Values to Out Parameters?

Moq 中的输出参数赋值

问题:

Moq 能否用于为输出参数赋值?

答案:

是的,可以使用 Moq 3.0 及以上版本为输出参数赋值。方法如下:

针对输出参数:

<code class="language-csharp">public interface IService
{
    void DoSomething(out string a);
}

[TestMethod]
public void Test()
{
    var service = new Mock<IService>();
    string expectedValue = "value";
    service.Setup(s => s.DoSomething(out expectedValue));

    string actualValue;
    service.Object.DoSomething(out actualValue);
    Assert.AreEqual(expectedValue, actualValue);
}</code>
登录后复制

Moq 在设置过程中记录分配给输出参数的值,并在测试期间返回该值。

针对引用参数:

Moq 目前不支持此功能。但是,您可以使用 Rhino Mocks,或者使用带约束的 Action 作为变通方法:

使用带约束的 Action:

<code class="language-csharp">public interface IService
{
    void DoSomething(ref string a);
}

[TestMethod]
public void Test()
{
    var service = new Mock<IService>();
    string value = "initial";

    service.Setup(s => s.DoSomething(ref It.Ref<string>.IsAny))
        .Callback<string>(s => s = "expectedValue");

    service.Object.DoSomething(ref value);
    Assert.AreEqual("expectedValue", value);
}</code>
登录后复制

在这里,我们使用 It.Ref<T>.IsAny 约束来匹配任何输入引用参数,并在回调中设置其值。

以上是Moq 可以为输出参数赋值吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板