2015-03-30 3 views
3

эй, ребята, я планирую добавить тестовый костюм для своего веб-проекта и некоторых мобильных ави. Я окончательно Midje и clojure.test, чтобы проверить каждую строку кода в основном для (Unit Testing),библиотеки для тестирования конца или конца тестирования api в clojure?

, но я не в состоянии выяснить, тестовые библиотеки для тестирования конца до конца апи.

что относительно clj-webdriver или любой другой лучший вариант ..?

благодарит за любую помощь.

+0

Вы посмотрели на simulant https://github.com/Datomic/simulant? – mavbozo

+0

чувак мне нужна библиотека тестирования api, но это только для датомного тестирования. – piyushmandovra

+0

Simulant создан командой Datomic. Здесь приведен пример для тестирования веб-api http: //martintrojer.github.io/clojure/2013/09/29/testing-an-api-with-simulant/ – mavbozo

ответ

1

Один из вариантов заключается в использовании ring.mock для проверки ваших услуг через их открытые конечные точки. Если вы просто проверяете ответы API на различные запросы, это направление, в которое я бы пошел.

В моем текущем проекте мы используем clj-webdriver для проведения некоторых тестов через веб-браузер, который помогает протестировать наш интерфейс. Те тесты, которые мы написали, помогли выловить регрессии, хотя мы все еще пытаемся упростить интерпретацию вывода. Мы стараемся не делать слишком много в этих тестах из-за хрупкости и сложности в сужении того, что сломано, когда тест терпит неудачу.

+0

привет, но ring.mock/request просто создайте карту запроса, она не запрашивает сервер. – piyushmandovra

+0

моя забота - нужно ли нам писать собственный обработчик для запроса на сервер ..? – piyushmandovra

+0

У вас уже есть обработчик, который обрабатывает запросы, которые будут использоваться, когда приложение действительно запущено. Из тестового пространства имен вы можете захватить этот обработчик и использовать его как функцию и передать ему карту запроса. –

2

Я использую комбинацию CLJ-WebDriver и на основе Kerodon испытаний:

  • я использую clj-webdriver для сценариев тестирования, которые требуют исполняющих JavaScript. Поскольку эти тесты используют настоящий браузер, они медленны, поэтому любой сценарий, который не должен использовать clj-webdriver, не должен его использовать. Это a tutorial about setting up clj-webdriver для нового приложения на основе Compojure.

  • Я использую Kerodon для всех тестов, для которых не требуется выполнение JavaScript. Kerodon не запускает настоящий сервер приложений и браузер, поэтому он намного быстрее. Это вдохновило Капибара Руби. Это a tutorial about setting up Kerodon для приложения Compojure, которое также включает обзор API Kerodon.

Одна из проблем с этим подходом заключается в том, что clj-webdriver и Kerodon имеют разные API. Допустим, у вас есть тест, который был первоначально написан с использованием Kerodon, поскольку для него не требовался JavaScript. Если вам нужно выполнить JavaScript в тесте, вам нужно будет перезаписать его с помощью API clj-webdriver. Однако это не большая проблема, но было бы неплохо, если бы был проект, который обертывает оба из них и будет поддерживать изменение параметра драйвера. Или, если эта функция будет частью Kerodon.

Другие, чем 2 API, этот подход работал для меня хорошо.

0

Я написал библиотеку Clojure специально для тестов конца HTTP API, это называется Restpect.

Это как простой тест может выглядеть следующим образом:

(deftest create-and-delete-user 
    (created (PUT "http://example.com/api/v1/users/john" {:email "[email protected]"})) 
    (ok (GET "http://example.com/api/v1/users/john")) 
    (ok (DELETE "http://example.com/api/v1/users/john")) 
    (not-found (GET "http://example.com/api/v1/users/john"))) 

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

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