Исключение 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 вы используете.