Исключение mock.record

Я использую 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 ответа

Ошибка LogError более одного раза. Добавьте следующее:

ext.LogError ("имя файла недействительно").IgnoreArguments().Repeat.Any();

Я не уверен на 100%, если вам нужно

Вы используете StrictMock, что означает, что разрешены только вызовы, специально установленные вами, и это включает в себя значения параметров. Вы устанавливаете ожидание того, что в LogError будет сделан вызов со строкой:

filename not valid

Но на самом деле во время выполнения был сделан вызов со строкой:

filename is short:jjh.df

Таким образом, Rhino.Mocks дает вам два исключения (одно, потому что он обнаружил вызов, который не ожидался, и другое, потому что ожидаемый вызов не был найден).

Ответ @Ivo на использование IgnoreArguments должен работать. Если это не так, пожалуйста, включите более подробную информацию о том, какую версию.NET и Rhino.Mocks вы используете.

Другие вопросы по тегам