Rhino Mock против режима отладки? - PullRequest
5 голосов
/ 08 сентября 2011

Моя проблема заключается в следующем:

У меня есть MS модульный тест, который использует заглушенный контекст http для тестов маршрутизации mvc. Но одна часть кода (которая использует макет носорога) проблематична:

var httpContextMock = MockRepository.GenerateStub<HttpContextBase>();
httpContextMock.Stub(c => c.Request.AppRelativeCurrentExecutionFilePath)
   .Return(url);

В режиме отладки вторая строка выдает исключение:

enter image description here

Почему возникает такая ошибка? Пока тесты запускаются без отладчика, все работает нормально.

Привет

Ответы [ 3 ]

1 голос
/ 04 октября 2011

Это действительно странно.Что странно для меня, так это то, что ваш код работает в режиме без отладки.Свойство Request не является заглушкой, поэтому вы не можете точно знать, что оно вернет.Вы можете попробовать следующее:

var httpContextMock = MockRepository.GenerateStub<HttpContextBase>();
var httpRequestMock = MockRepository.GenerateStub<HttpContextBase>();
httpContextMock.Stub(c => c.Request).Return(httpRequestMock); 
httpRequestMock.Stub(c => c.AppRelativeCurrentExecutionFilePath).Return(url);
0 голосов
/ 19 октября 2011

Проблема в вашем методе заглушки. Использование только .Return() вернет это значение только один раз . Если вам не важно, сколько раз заглушка должна вернуть значение, вы должны использовать .Return().Repeat.Any().

0 голосов
/ 19 октября 2011

У меня тоже была эта проблема со мной, и я исправил ее, удалив файл .suo для решения.

Кажется, я также получаю различные исключения при переключении параметра Break when Common Language Runtime Exception is thrown, который хранится в файле suo (Меню отладки -> Исключения)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...