我正在使用mock.record()
,我正在检查文件名的长度。
测试代码是:
MockRepository mock = new MockRepository();
IExtension ext = mock.StrictMock<IExtension>();
using (mock.Record())
{
ext.LogError("filename not valid");
}
LogAnalyser log = new LogAnalyser(ext);
string shortfilename = "jjh.df";
log.IsValid(shortfilename);
mock.Verify(ext);
,生产代码为:
public void IsValid(string filename)
{
if(filename.Length<8)
{
extension.LogError("filename is short:" + filename);
}
}
在调试时,生产中的extension.logerror
会产生异常:
IExtension.LogError("filename is short:jjh.df"); Expected #0, Actual #1.
IExtension.LogError("filename not valid"); Expected #1, Actual #0.
请提供一些解决方案。
答案 0 :(得分:1)
LogError被击中多次。添加以下内容:
ext.LogError(“文件名不是 。有效“)IgnoreArguments()Repeat.Any();
如果您需要
,我不是100%确定答案 1 :(得分:0)
您正在使用StrictMock,这意味着只允许您专门设置的呼叫 - 包括参数的值。您设置了一个期望,即使用字符串
调用LogErrorfilename not valid
但是在执行过程中实际发生的事情是使用字符串调用:
filename is short:jjh.df
所以Rhino.Mocks给你两个例外(一个是因为它发现了一个没有预料到的调用,另一个是因为没有找到预期的调用)。
@ Ivo使用“IgnoreArguments”的回应应该有效。如果不是,请提供有关您正在使用的.NET和Rhino.Mocks版本的更多详细信息。