Недостатки использования FakeWeb по сравнению с написанием макетов для тестирования - PullRequest
7 голосов
/ 18 марта 2010

Мне никогда не нравилось писать издевательства, и некоторое время назад кто-то здесь рекомендовал использовать FakeWeb. Я сразу влюбился в FakeWeb. Тем не менее, я должен задаться вопросом, есть ли недостатки использования FakeWeb. Кажется, что издевательства все еще встречаются гораздо чаще, поэтому мне интересно, что мне не хватает, что неправильно с использованием FakeWeb вместо этого. Есть ли какая-то ошибка, которую вы не можете устранить с помощью Fakeweb, или это что-то касающееся процесса TDD или BDD?

Ответы [ 2 ]

20 голосов
/ 17 марта 2011

Вы, вероятно, будете довольны VCR, который является оболочкой для библиотек HTTP-макетов. Он кэширует исходные HTTP-запросы, поэтому ваши тесты выполняются быстро и работают в автономном режиме, но также могут быть изменены для повторного выполнения исходного запроса, чтобы проверить, работает ли тест с удаленным API.

https://github.com/myronmarston/vcr

8 голосов
/ 19 марта 2010

Вам стоит взглянуть на WebMock http://github.com/bblimke/webmock

Недостатком насмешливых http-запросов является отсутствие защиты от удаленных изменений API. Если удаленная служба HTTP изменится и ваш код больше не будет совместим, ваши тесты не сообщат вам об этом. Если вы сами издеваетесь над методами http-клиента, у вас возникают те же проблемы. Хорошо иметь набор интеграционных тестов, который проверяет, что ваш код все еще может взаимодействовать с реальной службой http.

Преимущество таких библиотек, как FakeWeb или WebMock, заключается в том, что вы можете сосредоточиться на реализации поведения, а не беспокоиться о деталях реализации конкретной библиотеки клиента http. Даже если вы измените библиотеку, например, с Net :: HTTP на RestClient, поведение все равно должно быть сохранено, поэтому тесты все равно будут проходить. Если вы издеваетесь над клиентом http самостоятельно, вам придется менять тесты при изменении реализации, даже если поведение не изменилось. Использование FakeWeb или Webmock также помогает с TDD или BDD (сначала проверьте). Вы можете указать поведение http с помощью спецификаций или тестов, прежде чем беспокоиться о деталях реализации конкретного http-клиента.

...