c# - 检查方法是否收到了以列表为参数的调用
问题描述
我有一个调用存储库方法的服务方法;例如:
public async Task<bool> MyMethod(string param1, string param2)
{
var result = myRepository.Where(x => x.param1 == param1).ToList();
await myRepository.doStuff(result);
我正在尝试编写一个测试,目前看起来像这样:
var data = new List<MyData>() {new MyData {param1 = "1", param2 = "test"}};
var myRepository = Substitute.For<IMyRepository>();
myRepository.Where(x => x.param1 == "1").ReturnsForAnyArgs(data);
var myService = new MyService(myRepository);
bool w = myService.MyMethod("1", "2");
await myRepository.Received().doStuff(data);
但是,我收到了失败消息:
消息:NSubstitute.Exceptions.ReceivedCallsException:预计会收到匹配的呼叫:doStuff(List<MyData>) 实际上没有收到匹配的呼叫。收到 1 个不匹配的调用(用“*”字符表示的不匹配参数):doStuff(*List<MyData>*)
我还尝试了一种断言语法,例如:
await myRepository.Received().doStuff(Arg.Is<List<MyData>>(data));
但这没有什么区别。我是否在这里遗漏了什么,或者我检查列表的方式有什么问题。我的猜测是,这与比较两个列表的方式有关,因此它不会将它们视为相同,但除非我弄错了,否则它们是完全相同的。
解决方案
推荐阅读
- leaflet - 如何从单个 GeoJSON FeatureCollection 在 Leaflet 中设置多种特征类型的样式
- gcc - 用于解析 x86 程序集的 ANTLR4 语法
- flowtype - 取消注释反应中继流类型
- javascript - typeof x === 'undefined' 有什么作用?
- python - 如何绘制具有不同变量y的多个对象?
- tsql - 为什么临时表中的行数不显示?
- r - 在R中制作一个四象限比例面积图
- identityserver4 - 使用身份服务器的静默身份验证
- phabricator - 如何使用“project.edit”Conduit API 调用创建新项目
- powershell - PowerShell退出整个脚本而不仅仅是Invoke-Command