Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Rhinomock中存根一个接受IEnumerable的方法?_C#_Unit Testing_Rhino Mocks - Fatal编程技术网

C# 如何在Rhinomock中存根一个接受IEnumerable的方法?

C# 如何在Rhinomock中存根一个接受IEnumerable的方法?,c#,unit-testing,rhino-mocks,C#,Unit Testing,Rhino Mocks,我试图模拟一个SqlLayer类,它有一个GetDataReader方法,该方法接受字符串查询和一个SqlParameters的IEnumerable。我尝试过如下方式删除方法调用: var parameters = new SqlParameter[] {} mockSqlLayer.Stub(x => x.GetDataReader(spaceConsumedQuery, parameters)).Return(MockDataReader()); public IDataReade

我试图模拟一个SqlLayer类,它有一个GetDataReader方法,该方法接受字符串查询和一个SqlParameters的IEnumerable。我尝试过如下方式删除方法调用:

var parameters = new SqlParameter[] {}
mockSqlLayer.Stub(x => x.GetDataReader(spaceConsumedQuery, parameters)).Return(MockDataReader());
public IDataReader GetDataReader(string commandText, IEnumerable<SqlParameter> parameters)
但是测试返回了一个NullReferenceException,我假设是因为签名解析不正确,并且找不到存根。 我尝试调用的方法签名如下所示:

var parameters = new SqlParameter[] {}
mockSqlLayer.Stub(x => x.GetDataReader(spaceConsumedQuery, parameters)).Return(MockDataReader());
public IDataReader GetDataReader(string commandText, IEnumerable<SqlParameter> parameters)
public-IDataReader-GetDataReader(字符串commandText,IEnumerable参数)

需要松开参数匹配器,以允许调用按预期进行

mockSqlLayer
    .Stub(_ => _.GetDataReader(spaceConsumedQuery, Arg<IEnumerable<SqlParameter>>.Is.Anything))
    .Return(MockDataReader());
mockSqlLayer
.Stub(=>..GetDataReader(spaceConsumedQuery,Arg.Is.Anything))
.Return(MockDataReader());
最初使用的代码需要使用相同的对象引用来匹配调用

这里的假设是变量
spaceConsumedQuery
中的值与练习受试者时使用的值相同


如果没有,则
Arg.Is.。任何
都可以用来取消匹配。

尝试
var parameters=Enumerable.Empty()
并查看是否仍然出现错误仍然在同一位置出现相同的错误。在这种情况下,类型不是您的问题。重复关闭,但不确定时重新打开。