C# 如何在Rhinomock中存根一个接受IEnumerable的方法?
我试图模拟一个SqlLayer类,它有一个GetDataReader方法,该方法接受字符串查询和一个SqlParameters的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
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()
并查看是否仍然出现错误仍然在同一位置出现相同的错误。在这种情况下,类型不是您的问题。重复关闭,但不确定时重新打开。