1
这里有我创建一个模拟的接口IManager。它具有方法犀牛嘲笑,AssertWasCalled与Arg限制
void LogUserWithParams(string maskValue, E_LOG_LEVEL logLevel,
string formatMsg, ref Array args);
我创建了一个测试,以检查方法调用的参数。
Array logParams = Arg<Array>.Ref(Is.Anything(), new object[0]).Dummy;
manager.AssertWasCalled(man => man.LogUserWithParams(
Arg<string>.Is.Anything,
Arg<E_LOG_LEVEL>.Is.Anything,
Arg<string>.Is.Anything,
ref logParams
)
);
它产生了相当一个奇怪的消息: 参数0,必须使用定义:Arg.Is,Arg.Text或Arg.List
正如你可以看到,所有的参数都是用精氨酸定义。对测试有什么问题有任何想法?
谢谢,吉米!奇怪的是,你的变种造成的另一个神秘的错误: 参数3必须被定义为:出精氨酸 .OUT(返回值).Dummy 因此,我不得不在最后一个参数更改为 裁判精氨酸 .OUT(新对象[0])。虚拟 这很好,但没有给我任何方法来定义这个参数的进一步限制。 –
2012-01-30 09:26:45
@IvanGerken:确实很奇怪。你可以试试我的样品是否适合你?此外,你使用的是什么版本的Rhino(3.6这里)? – 2012-01-30 18:21:25
我试着用我的项目中使用的相同版本的Rhino Mocks 3.6的样本,它工作正常。我不得不只改变一行:“Array output = new Array();”到“数组输出=新对象[0];”。我不知道你是如何设法建立你的样本:) 好吧,可能我偶然发现了一些几乎不可复制的RM故障。在我的测试中,我模拟了几十个来自PIA的接口。再次感谢你的帮助! – 2012-01-31 09:18:59