You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 6中CsvReader模拟值未返回的问题咨询(无法修改实例代码)

问题原因
  1. 你模拟的CsvReader对象和函数内部通过new CsvReader(reader, config)创建的实例完全无关,模拟的配置自然不会生效。
  2. CsvReader的GetRecords<T>方法如果是非虚方法(或是扩展方法),Moq无法直接拦截并替换其返回值。
可行解决方案

既然无法修改创建CsvReader的代码,那就换一种思路:模拟StreamReader的输入内容,让真实的CsvReader读取预设的CSV数据,从而得到你想要的记录。

具体实现代码如下:

// 构造与MyClass字段匹配的CSV内容
var csvContent = "ID,Name\n123,ABC";
// 将字符串转为内存流
var stream = new MemoryStream(Encoding.UTF8.GetBytes(csvContent));
// 创建读取该流的StreamReader
var testReader = new StreamReader(stream);

// 调用目标函数,传入testReader和你的config
var result = YourTargetFunction(testReader, config);

// 验证结果符合预期
Assert.Single(result);
Assert.Equal("123", result[0].ID);
Assert.Equal("ABC", result[0].Name);
补充说明

这种方式完全不需要修改目标函数的代码,通过伪造输入源的方式,让真实的CsvReader解析出你预设的记录,既符合测试逻辑,也规避了无法修改目标代码的限制。

内容的提问来源于stack exchange,提问作者user20358

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 12:45:00