Как мне использовать Capybara get, show, post, put в контроллере тестов? - PullRequest
3 голосов
/ 06 мая 2011

Я просто не уверен, что это за слово ...

Это говорит мне: «Пока нет ответа. Сначала запросите страницу. '

it "should list searches" do
  get 'index'
  page.should have_selector('tr#search-1')
end

Это должно быть так?

it "should list searches" do
  get 'index' do
    page.should have_selector('tr#search-1')
  end
end

Этот способ, похоже, на самом деле ничего не проверяет.

Какой правильный путь?

Ответы [ 3 ]

6 голосов
/ 28 июля 2011

Согласно этому , Capybara не поддерживает запросы PUT и DELETE с драйвером по умолчанию. PUT и DELETE обычно подделывают с помощью JavaScript, чтобы приспособить архитектуру на основе REST.

Я не проверял, но я считаю, что вы можете использовать PUT и DELETE с Capybara, если вы используете один из его JS-совместимых драйверов, таких как Selenium.

5 голосов
/ 22 апреля 2012

Методы get, post и т. Д. Являются частью интерфейса функционального тестирования для тестов контроллера Rails, который является совершенно отдельной системой тестирования. Вы не можете использовать их с Капибарой.

Для запросов GET используйте вместо этого метод visit Капибары.

Для других типов запросов (POST, PUT, ...) либо сделайте то, что делает пользователь, и перейдите на страницу с формой для заполнения и отправки. Или, если вы тестируете API, напишите функциональный тест для вашего контроллера без использования Capybara, например:

post :index
response.status.should == 200
response.body.should contain('Hello World')

См. Также пост Джонаса на , почему вы не должны тестировать API с помощью Capybara .

0 голосов
/ 06 мая 2011

Вы обычно используете visit с Капибарой для посещения страниц, я думаю.

it 'should list searches' do
  visit '/'
  page.should have_selector('tr#search-1')
end
...