【发布时间】:2015-08-27 14:01:42
【问题描述】:
我有一个看起来像这样的类:
public myArguments
{
public List<string> argNames {get; set;}
}
在我的测试中,我正在这样做:
var expectedArgNames = new List<string>();
expectedArgNames.Add("test");
_mockedClass.CheckArgs(Arg.Any<myArguments>()).Returns(1);
_realClass.CheckArgs();
_mockedClass.Received().CheckArgs(Arg.Is<myArguments>(x => x.argNames.Equals(expectedArgNames));
但测试失败并显示以下错误消息:
NSubstitute.Exceptions.ReceivedCallsException : Expected to receive a call matching:
CheckArgs(myArguments)
Actually received no matching calls.
Received 1 non-matching call (non-matching arguments indicated with '*' characters):
CheckArgs(*myArguments*)
我猜是因为.Equals(),但我不知道如何解决?
【问题讨论】:
-
this 是一个好的解决方案吗?
-
@w0lf 是和否,我认为它会起作用,但我可能不得不实现
IEquatable,因为List<>可以是除string之外的其他对象类型的列表,谢谢 -
你为什么把
_realClass和_mockedClass搞混了?我没有看到使用expectedArgNames变量调用CheckArgs()的代码。您能否发布可重现代码
标签: c# unit-testing nsubstitute