我使用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异常,提示无法确定要使用的参数说明。我在stackoverflow上找到了以下信息:
Cannot determine argument specifications to use
这是相关的,但我无法在上面的代码中应用它。为什么上面的代码是有歧义的?还有其他方法可以指定Received()接受任何参数吗?
null
没有类型,所以必须写成Arg.Is<string>((string)null)
。 - Al Keppnull
而不是Arg.Is<string>((string)null)
。 - Marcio Rinaldi