【问题标题】:nsubstitute mocking a call to a method for any XMLNode valuensubstitute 模拟对任何 XMLNode 值的方法的调用
【发布时间】:2021-02-26 14:59:35
【问题描述】:

我有一个看起来像这样的界面

IBasePlugin 包含...

  bool Connect(XmlNode xmlRequest);

无论我使用 NSubstitute 发送什么请求,我都想模拟它以返回 true 这是我的场景的样子

//[TestFixture]
public class NUnitTest1
{
    //[Test]
    public void TestMethod1()
    {
        var b = Substitute.For< IBasePlugin > ();
        b.Connect(Arg.Any<XmlNode>())
        MyPlugin tester = new MyPlugin(b);
        tester.GetAddressList()

    }
}

问题是,我想知道如何模拟传递给 Connect 的任何值。 我认为它会像我所拥有的那样,但它不喜欢任何调用,因为不支持 ref 返回类型 ref T。任何输入都会很棒。谢谢。

【问题讨论】:

  • 我在定义中看不到T 类型?从IBasePlugin 定义`b.Connect(Arg.Any()).Returns(true);` 应该可以工作。
  • 我需要补充的是,我使用的是 c# 6。如果它是 7.0 或更高版本,则该答案是正确的。由于项目的原因,我当时无法转换。

标签: .net mocking nsubstitute


【解决方案1】:

我想通了。你不能使用任何。添加 Compat 是关键。 我不得不使用:

b.Connect( Arg.Compat.Any<XmlNode>()).Returns(true);

【讨论】:

  • 如果您愿意,可以使用稍短的b.Connect(null).ReturnsForAnyArgs(true) 语法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多