Лучшие практики для TDD BDD с кодом, который использует внешние сервисы / API - PullRequest
4 голосов
/ 01 июня 2010

Я использую твиттер, который в основном обращается к твиттеру и позволяет мне получать твиты, временную шкалу и т. Д. Это действительно хорошо, но у меня есть много кода, который использует то, что он возвращает, и мне нужно его проверить. То, что возвращает камень, не совсем простые строки, там довольно сложные объекты (тоже страшные), так что я оставил царапину на голове.

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

ответы, которые не ориентированы ни на язык, ни на рубин / рельсы.

Ответы [ 2 ]

6 голосов
/ 01 июня 2010

То, о чем вы на самом деле говорите, - это два разных вида тестирования, которые вы хотели бы выполнить - модульные тесты и интеграционные тесты.

Юнит-тесты проверит валидность методов независимо от каких-либо внешних данных. Вы должны взглянуть на какую-то насмешливую структуру, основанную на том языке, который вы используете. В основном вы хотите сказать, что с тестами что-то эквивалентное «если эти предположения квалифицированы, то этот тест должен дать ...» Структура создания определит ваши предположения в терминах того, что определенные классы / объекты установлены конкретный способ и может считаться действительным. Это тесты, которые не будут полагаться на то, что Твиттер жив, или на то, что третья часть библиотеки / API реагирует.

Интеграционные тесты будут выполнять тесты в реальном времени с источником данных, используя библиотеку / API для выполнения реальных действий. Когда это становится сложным, так как вы используете стороннюю службу, выписываете эту услугу (то есть, если вы создаете новые твиты). Если вы есть, вы всегда можете создать учетную запись в Twitter, которая может быть использована только для операций записи. Как правило, если вы проводите тестирование на локальной базе данных, например, вы можете вместо этого использовать транзакции для тестирования подобных операций; откат транзакций вместо их совершения.

Вот пара неязыковых определений высокого уровня:

Я из стека .NET, поэтому я не буду притворяться, что много знаю о Ruby. Однако быстрый поиск в Google показал следующее:

0 голосов
/ 19 декабря 2014

Вы можете легко заглушить слой http, используя что-то вроде wiremock http://wiremock.org/ Я уже использовал это в нескольких проектах, и он довольно мощный и быстрый. Это устранит весь установленный код кодирования, основанного на пародии - просто запустите банку с соответствующими сопоставлениями и Боб - ваш дядя.

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