编程语言
首页 > 编程语言> > c# – NSubstitute无法确定要使用的参数规范

c# – NSubstitute无法确定要使用的参数规范

作者:互联网

我使用NUnit和NSubstitute进行单元测试.我有以下内容:

public interface IDataProvider
{
    void Log(int tvmId, DateTime time, int source, int level, int eventCode, string message);
}

...

var fakeDataProvider = Substitute.For<IDataProvider>();
...
fakeDataProvider.Received().Log(
    Arg.Any<int>(),
    new DateTime(2000, 1, 1),
    0,
    0,
    0,
    null);

fakeDataProvider.Received()抛出AmbiguousArgumentException,并显示无法确定要使用的参数规范的消息.我在SO上找到了以下内容

Cannot determine argument specifications to use

这是相关的,但我不能在上面的代码中应用它.为什么上面的代码含糊不清?我怎么能指定Received()它应该接受任何参数?

解决方法:

由于Log方法中有多个int参数,因此必须为每个参数使用参数规范.

fakeDataProvider.Received().Log(
    Arg.Any<int>(),
    new DateTime(2000, 1, 1),
    Arg.Is(0),
    Arg.Is(0),
    Arg.Is(0),
    null);

标签:c,mocking,nsubstitute
来源: https://codeday.me/bug/20190611/1220107.html