2013-11-07 2 views
-1

Я пишу некоторые тестовые примеры интеграции для существующего приложения. Мой тест отлично работает, если есть только один блок. Однако, если я добавляю более одного блока, он вызывает ошибку. Ниже приведен код, который работает:Тесты Rspec/Capybara не работают для нескольких блоков «it»

require 'spec_helper' 
describe 'Group' do 
    before do 
    visit 'http://groups.caremonkey.com/users/sign_in' 
    fill_in "Email", :with => "[email protected]" 
    fill_in "Password", :with => "password" 
    click_button "Login" 
    page.should have_link('Account') 
    end 
    it 'Should check all the links and functionality of groups' do 
    #add new subgroup with valid data should save a new group 
    find("#group-squares").click_link("Add") 
    fill_in "Group Name", :with => "Melbourne futsal" 
    click_on("Save") 
    page.should_not have_content("can't be blank") 
    page.execute_script("parent.$.fancybox.close();") 
    page.should have_link('Account') 

    #test edit group: should be able to update group info provided valid data are given 
    first(".actual img").click 
    page.should have_content("Group") 
    page.should have_link("Cancel") 
    fill_in "Group name", :with => "Futsal club" 
    page.execute_script("$('#sub-group-color-options').find('.color23').click()") 
    click_button "Save" 
    click_on("Cancel") 
    page.should have_link('Account') 
    end 
end 

Он отлично работает, когда я ставлю все «это» блок вместе в одном «это» блок. Но когда я разделяю их на другой блок «it», он перестает работать. Например, если я разделить эту («редактировать группу теста: должно быть в состоянии обновить Информацию о группе при условии, действительные данные приведены») тестовый случая в отдельную «это» блок следующего

require 'spec_helper' 
describe 'Group' do 
    before do 
    visit 'http://groups.caremonkey.com/users/sign_in' 
    fill_in "Email", :with => "[email protected]" 
    fill_in "Password", :with => "password" 
    click_button "Login" 
    page.should have_link('Account') 
    end 
    it 'add new subgroup with valid data should save a new group' do 
    find("#group-squares").click_link("Add") 
    fill_in "Group Name", :with => "Melbourne futsal" 
    click_on("Save") 
    page.should_not have_content("can't be blank") 
    page.execute_script("parent.$.fancybox.close();") 
    page.should have_link('Account') 
    end 

    it 'should be able to update group info provided valid data are given' do 
    first(".actual img").click 
    page.should have_content("Group") 
    page.should have_link("Cancel") 
    fill_in "Group name", :with => "Futsal club" 
    page.execute_script("$('#sub-group-color-options').find('.color23').click()") 
    click_button "Save" 
    click_on("Cancel") 
    page.should have_link('Account') 
    end 
end 

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

Failure/Error: visit 'http://groups.caremonkey.com/users/sign_in' 
ActionController::RoutingError: 
    No route matches [GET] "https://stackoverflow.com/users/sign_in" 

Одна вещь, я должен проверить все функции в удаленном (URL: http://groups.caremonkey.com/). Потому что я пишу интеграционные тесты для существующего приложения. Кроме того, мне нужно войти в систему, прежде чем тестировать остальные функции моего приложения. Заранее спасибо за вашу помощь.

+0

Вы намеревались сделать пользователя 'bash @ caremonkey.com' полностью общедоступным для всех в Интернете? –

+0

Нет, это не было преднамеренным. Я изменил свой пользователь/пропуск только для целей тестирования. Спасибо в любом случае за вашу заботу. –

+0

Обновите свой вопрос, чтобы точно показать, как вы разделили тесты и что такое сообщение об ошибке. – Shepmaster

ответ

0

Я думаю, что-то вроде этого:

require 'spec_helper' 
describe 'Group' do 
    before do 
    visit 'http://groups.caremonkey.com/users/sign_in' 
    fill_in "Email", :with => "[email protected]" 
    fill_in "Password", :with => "password" 
    click_button "Login" 
    page.should have_link('Account') 
    find("#group-squares").click_link("Add") #apperently both specs are "scoped" to this page 
    end 

    it 'Should check all the links and functionality of groups' do 
    fill_in "Group Name", :with => "Melbourne futsal" 
    click_on("Save") 
    page.should_not have_content("can't be blank") 
    page.execute_script("parent.$.fancybox.close();") 
    page.should have_link('Account') 
    end 

    it "test edit group: should be able to update group info provided valid data are given" 
    first(".actual img").click 
    page.should have_content("Group") 
    page.should have_link("Cancel") 
    fill_in "Group name", :with => "Futsal club" 
    page.execute_script("$('#sub-group-color-options').find('.color23').click()") 
    click_button "Save" 
    click_on("Cancel") 
    page.should have_link('Account') 
    end 
end 

Моя интуиция подсказывает мне, как тест нужен следить за этим: find("#group-squares").click_link("Add") поэтому я добавил его к перед блоком этого теста, однако, загадочное, что первая (». фактический img ")?

+0

Спасибо за ваш ответ. Однако это не сработало для меня. 'find (" # group-squares "). click_link (" Добавить ")' является ссылкой для тестирования создания группы и 'first (". фактический img "). click' ссылается на первую ссылку редактирования группы. Rspec выдает ошибку маршрутизации при попытке выполнить перед блоком второй раз. –

0

Вы следили за документацией Capybara за calling remote servers? Он говорит, что вы должны иметь следующее:

Capybara.current_driver = :selenium # Or anything but rack_test, probably 
Capybara.run_server = false # Don't run your app in-process 
Capybara.app_host = 'http://groups.caremonkey.com/' 

Я думаю, что когда вы однажды посетили сайт, будущие visit звонки пытаются использовать относительные пути, который затем направляется на сервер по умолчанию. Я не могу понять, почему вы получите ActionController::RoutingError, если у вас не работает какой-либо сервер Rack. Выполняете ли вы эти тесты в другом приложении Rails?

+0

Я тоже это сделал, что тоже не помогло. В любом случае спасибо! –

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