Я использую направляющие 2.3.5, и это - то, что я сделал. У меня есть последний огурец, огуречные направляющие и установленная капибара.
rails demo
cd demo
ruby script/generate cucumber --rspec --capybara
ruby script/generate feature post title:string body:text published:boolean
ruby script/generate scaffold post title:string body:text published:boolean
rake db:migrate
rake cucumber
Все тесты являются передающими. Теперь я хочу протестировать использование JavaScript.
В это время это - то, как сценарий похож
Scenario: Delete post
Given the following posts:
|title|body|published|
|title 1|body 1|false|
|title 2|body 2|true|
|title 3|body 3|false|
|title 4|body 4|true|
When I delete the 3rd post
Then I should see the following posts:
|Title|Body|Published|
|title 1|body 1|false|
|title 2|body 2|true|
|title 4|body 4|true|
Я добавил @javascript наверху.
Теперь, когда я выполняю огурец граблей затем, я вижу страницу подтверждения. Но ничего не происходит, пока я не нажимаю.
Что делает я должен сделать так, чтобы хорошо был нажат автоматически, и тест продолжается вперед.
Что ж, это своего рода взлом, но я думаю, что сейчас это единственный способ:
When /^I confirm a js popup on the next step$/ do
page.evaluate_script("window.alert = function(msg) { return true; }")
page.evaluate_script("window.confirm = function(msg) { return true; }")
end
Вы должны поместить этот шаг прямо перед тем, который вызывает всплывающее окно подтверждения (перейдите по ссылке). Он изменит стандартное предупреждение и подтвердит поведение, чтобы всегда возвращать истину. Таким образом, вам не нужно самостоятельно нажимать кнопку «ОК».