Тестирование методов уничтожения с капибарой - PullRequest
2 голосов
/ 03 мая 2011

Я написал несколько тестов с использованием Capybara, но я не использую селен и другие драйверы JS. Но я сомневаюсь, что смогу ли я проверить метод уничтожения таким образом? Так как мне нужно подтвердить JS-подтверждение, а data-method = "delete" нельзя посетить ...

Я бы хотел сделать что-то очень похожее на Капибару:

посещение '/ people / 123',: data-method => 'delete'

Ребята, знаете ли, есть ли способ сделать это?

Заранее спасибо, Andre

Ответы [ 2 ]

4 голосов
/ 14 февраля 2013

Просто кое-что, что нужно знать с ответом @Mike Mazur, если ваш контроллер выполняет перенаправление на действие #destroy, то вызов метода delete для драйвера Capybara фактически не следует за перенаправлением.Вместо этого он просто заполняет response сообщением о перенаправлении, то есть body == <html><body>You are being <a href=\"http://www.example.com/model_names\">redirected</a>.</body></html> и status_code == 302.

Итак, чтобы заполнить все так, как вы ожидаете на обычной капибаре click_button 'Delete Model', вам нужно вручную выполнить перенаправление.Один (нереализованный и со вкусом RSpec) способ сделать это:

Capybara.current_session.driver.delete controller_path(model_instance)
Capybara.current_session.driver.response.should be_redirect
visit Capybara.current_session.driver.response.location
4 голосов
/ 03 мая 2011

Rails имеет код JavaScript, который генерирует форму из атрибутов href и data-method ссылки и отправляет ее;это не будет работать без JS.

Один из способов проверить это: сначала проверьте наличие ссылки и надлежащих атрибутов (href, data-method), затем вручную инициируйте запрос на удаление сCapybara::RackTest::Driver#delete метод .Если вы делаете это часто, напишите вспомогательный метод, заключающий в себе эти два шага.

...