Могу ли я использовать Moq с MvcContrib.TestHelper? - PullRequest
1 голос
/ 27 июня 2011

Я работаю над своим первым проектом ASP .NET MVC, и до этого момента я использовал Rhino.Mocks только для настольных приложений.

Уже давно, поэтому я решил выяснить, что используетсяв поле сейчас.
Прочитав некоторые похвалы за Мок , я решил пойти с ним.
(Мне нравится то, что некоторые называют лямбда-злоупотреблением).

Однако я также слышал похвалу за MvcContrib TestHelper framework, который , кажется, зависит от Rhino.Mocks .

Мне нужно знать , навязывает ли TestHelper использованиеRhino.Socks на меня .Я не хотел бы смешивать две разные среды для моделирования в моих тестах, поэтому в случае, если TestHelper зависит от Rhino, мне придется либо

  • переключиться на Rhino.Mocks ради TestHelper(печально, но вероятно);
  • отказаться от TestHelper ради использования Moq (маловероятно).

Я действительно надеюсь, что TestHelper не зависит от Rhino.Mocks в его общедоступных API, но яЯ не уверен на 100%.
Может ли кто-нибудь (не) подтвердить это?

Ответы [ 2 ]

3 голосов
/ 29 июня 2012

Я не уверен, когда это было изменено, но TestControllerBuilder теперь принимает необязательный аргумент IMockFactory<T>.Проблема, с которой я столкнулся, заключается в том, что если вы не передадите один из них, то по умолчанию сначала используется RhinoMocks, а затем Moq, оба в качестве прокси.Если вы используете StructureMap, как и я, он всегда будет использовать RhinoMocks.Мне бы очень хотелось, чтобы был какой-то флаг, чтобы сообщить TestControllerBuilder, какой из них использовать.

Чтобы заставить строителя использовать Moq, вы можете передать новый класс IMockFactory<T>, который отражается обратно в Moq.Внутри MvcContrib есть класс, который делает это отлично, но он не доступен для общественности.Я не уверен, почему они не раскрыли его.

Вместо того, чтобы создавать собственную реализацию IMockFactory<T>, я решил копаться в код MvcContrib и копировать / вставлять MoqFactory и MoqProxy классы в мое собственное решение и передать их в TestControllerBuilder.Это кажется действительно грязным, но оно выполняет свою работу и позволяет мне использовать Moq, как душе угодно.

2 голосов
/ 28 июня 2011

Мне нужно знать, навязывает ли мне TestHelper с помощью Rhino.Mocks

Да, это навязывает вам использование Rhino Mocks.Все свойства, такие как Request, Response, Session, HttpContext и т. Д. В классе TestHelperBuilder, снабжены метками Rhino Mocks и ждут, пока вы напишите на них ожидания.

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