当前位置: 首页 > 编程语言 > C#

NSubstitute测试单独工作但在套件中抛出意外的匹配器参数分享

时间:2023-04-10 22:38:22 C#

]publicvoidTestRetrieveElementsInVersion(){IRetrieveElementSequence组件=Substitute.For();Listlist=newList{newUnconstructedElement{Version="1"},newUnconstructedElement{Version="2"}};组件.RetrieveElements().Returns(list);//这里报告异常conststringtarget="1";IRetrieveElementSequenceservice=newRetrieveElementsInAVersion(component,target);IList结果=service.RetrieveElements();boolcheck=result.All(e=>e.Version==target);Assert.IsTrue(检查);当单独运行测试时,此代码使用ReSharper运行程序在VisualStudio中传递。当作为列表的一部分运行时它会失败,就像我从解决方案运行所有测试时一样。NSubstitute.Exceptions.UnexpectedArgumentMatcherException:参数匹配器(Arg.Is,Arg.Any)应该只用于代替成员参数。不要在Returns()语句或成员调用以外的任何地方使用。我不知道我在哪里使用Arg.Any或Arg.Is。我在做什么让NSubstitute抱怨?当我使用.Returns()返回非本机对象列表时会发生这种情况。这主要是由于之前使用参数匹配器对非虚拟方法或Returns语句进行的测试。不幸的是,调试起来非常棘手。第一步是查看在此夹具中运行所有测试是否有问题。如果是这样,请检查该夹具中Arg.Is|Any的所有用法,从测试失败之前运行的那个开始(如果您的测试框架使用可预测的测试顺序,否则您需要查看测试日志以查看哪个tests进行了一个失败的测试。如果那个fixture没有被使用,你需要查看预运行的fixture,看看leftargmatcher是从哪里来的。它很可能接近失败的测试。以上是C#学习教程:NSubstituteTestsWorkAlone,但是把套件中UnexpectedMatcherArgument分享的内容全部扔掉,如果对你有用,需要了解更多C#学习教程,希望大家多多关注,本文收藏来自网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处: