mock.record异常

时间:2011-04-22 13:15:35

标签: testing mocking rhino-mocks

我正在使用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.

请提供一些解决方案。

2 个答案:

答案 0 :(得分:1)

LogError被击中多次。添加以下内容:

  

ext.LogError(“文件名不是   。有效“)IgnoreArguments()Repeat.Any();

如果您需要

,我不是100%确定

答案 1 :(得分:0)

您正在使用StrictMock,这意味着只允许您专门设置的呼叫 - 包括参数的值。您设置了一个期望,即使用字符串

调用LogError
filename not valid

但是在执行过程中实际发生的事情是使用字符串调用:

filename is short:jjh.df

所以Rhino.Mocks给你两个例外(一个是因为它发现了一个没有预料到的调用,另一个是因为没有找到预期的调用)。

@ Ivo使用“IgnoreArguments”的回应应该有效。如果不是,请提供有关您正在使用的.NET和Rhino.Mocks版本的更多详细信息。