您如何在RhinoMocks中添加一个接受IEnumerable的方法?

问题描述 投票:0回答:1

我正在尝试模拟一个SqlLayer类,该类具有一个GetDataReader方法,该方法接受字符串查询和SqlParameters的IEnumerable。我试过像这样的方法调用:

var parameters = new SqlParameter[] {}
mockSqlLayer.Stub(x => x.GetDataReader(spaceConsumedQuery, parameters)).Return(MockDataReader());

但是该测试返回一个NullReferenceException,我认为是因为签名无法正确解析,并且无法找到存根。我尝试调用的方法签名如下所示:

public IDataReader GetDataReader(string commandText, IEnumerable<SqlParameter> parameters)
c# unit-testing rhino-mocks
1个回答
0
投票

参数匹配器需要放宽以允许调用按预期方式运行。

mockSqlLayer
    .Stub(_ => _.GetDataReader(spaceConsumedQuery, Arg<IEnumerable<SqlParameter>>.Is.Anything))
    .Return(MockDataReader());

最初使用的代码将需要使用相同的对象引用来进行匹配。

这里的假设是变量spaceConsumedQuery中的值与锻炼被测对象时使用的值相同。

如果没有,那么也可以使用Arg<string>.Is.Anything来放松匹配。

© www.soinside.com 2019 - 2024. All rights reserved.