2010-06-01 4 views
4

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

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

Ответы, которые не являются ориентированными на лингвистические или рубиновые/рельсовые центрические, будут наиболее оценены.

ответ

6

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

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

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

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

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

+0

благодарит joseph за ваш ответ. Я использовал мокко раньше, но задавался вопросом, как правильно использовать его, ловушки и т. Д. Живое тестирование было бы хорошим, нужно было бы сбросить мою учетную запись Twitter каждый раз было бы болью, я не верю, что вы можете сделать это программно. – robodisco

+0

@ joseph.ferris Как BDD тестирует полный стек для отказа стороннего API. Скажем, тестирование на вещи, где twitter/dropbox/facebook отправил обратно любой из многочисленных кодов ошибок. Несомненно, способ, которым работает пользовательский интерфейс, важен и нуждается в тестировании на этом уровне? Как это обрабатывается в BDD производства? – Jason

+0

@jason К сожалению, у меня нет прямого опыта работы с BDD.В настоящее время у нас есть несколько реализаций сторонних API-интерфейсов, и мы обычно пишем класс клиента для обработки основных подключений, а также операций отправки и получения. Как он интегрируется в более крупную картину, заключается в том, что все эти клиентские классы не возвращают собственные ошибки напрямую, а скорее преобразуются в универсальное исключение, которое может быть распространено в стеке, где пользовательский интерфейс может обрабатывать его равномерно. Для Twitter и LinkedIn я создал пользовательские классы поверх RestSharp и извлек интерфейсы для издевательств. –

0

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

Смежные вопросы