【发布时间】:2016-06-20 16:32:16
【问题描述】:
给定这个函数参考
void ParseFirstTwoRows(FileQueue file, ref string[] firstRow, ref string[] secondRow);
如何使用 Moq 构建依赖于 firstRow 和 secondRow 具有值的测试?
我试过了:
Mock<IFileParser> mockFileParse = new Mock<IFileParser>();
string[] firstline = new string[2] { "1", "2" };
string[] secondline = null;
mockFileParse.Setup(m => m.ParseFirstTwoRows(It.IsAny<FileQueue>(), ref firstline, ref secondline))
.Callback<FileQueue, string[], string[]>((fq, fl, sl) =>
{
fq = new FileQueue();
fl = firstline;
sl = secondline;
});
return mockFileParse;
但这会导致错误:
无效的回调。使用参数设置方法 (FileQueue,String[]&,String[]&) 无法调用带参数的回调 (文件队列,字符串[],字符串[])。
我已经看到了几个关于此的问题,但我很困惑我正在尝试做的事情是否是不可能的,或者我是否只是没有正确地构建测试。我的测试只需要确保 ref 参数在执行代码中具有值。
【问题讨论】:
标签: c# unit-testing moq