1

いくつかのボタン クリック イベントの動作をテストしたいと思います。これが私の *_spec.rb です

***pause_spec.rb***

require 'spec_helper'
require 'rspec'

describe CreditApplicationsController, type: :controller do
  render_views  

before do
  visit '/users/sign_in'                             #### FIRST SIGN IN
    #user = User.find_by_email("mymail@example.com") #### AND FILL REQUIRED FIELDS
  @user = FactoryGirl.create(:user)

  sign_in @user
  fill_in_fields(@user)
  main_page_available?(@user)                         #### *** ####
end

it 'should check pause_on button' do
  click_link 'pause-link'    ### OK HERE, after this - pop up bootbox.js
                             ### confirm window

  #click_link 'Pause-confirm'             ### HERE IS MY PROBLEM ###  
                                          ### click_link / click_button can't find
                                          ### button within my bootbox.js     
  assert has_selector? "leave"
end

end

カピバラスクリプトを使用してこれをテストする別の方法を試しました。

私は次のことを試しました:

describe CreditApplicationsController, type: :controller, 
                                       js: true, driver: :selenium do

.....

そして変更

 click_link 'Pause-confirm'

=>

find('.btn-success').trigger('click')
... or ...
page.execute_script("$('.btn-success').click()")

結果が得られず、メソッド main_page_available?(@user) 内でエラーが発生しました。これは、説明セクションにjs: trueを追加したためです ( 'should... セクション内にjs: trueを追加した場合と同じ結果)。

spec_helper.rb の私のメソッド fill_in_fields(user) と main_page_available?(user)

    def fill_in_fields(user)
    # @user = User.find_by_email("a.solodkov@prbb.com")
      fill_in "user[email]", with: user.email
      fill_in "user[password]", with: "12345678"
      click_button "Sign in"

      ## Success with sign in action?
      if has_selector? 'input#user_net_name'
        assert has_selector? 'input#user_net_name'
        fill_in "user[net_name]", with: user.net_name
        fill_in "user[password]", with: "12345678"
        fill_in "user[password_confirmation]", with: "12345678"
        click_button 'change-button'
      end
    end

    def main_page_available?(user)
      # Main page?
      if has_selector? 'small.pull-right'
        within "small.pull-right" do
          assert has_content? "#{user.id}"
        end
      else
        assert has_selector? 'table#admin-credit-application'
      end
    end

私は何を間違っていますか?

前もって感謝します!どんな助けでも大歓迎です!

4

1 に答える 1

1

js モーダル ウィンドウ (私の場合は bootbox.js - CustomConfirmBox) 内の要素のチェックに問題がある場合は、仕様にjs: trueを指定する必要があります。

前述の問題を解決する方法は次のとおりです。

it 'should check pause_on pause_off', js: true do #, driver: :selenium
  click_link 'pause-link'
  page.should have_xpath("//div[@class='modal-body']")
  page.should have_xpath("//div[@class='bootbox modal fade in']")
  page.should have_xpath("//a[@class='btn btn-success']")
  click_link 'Pause'
  page.should have_xpath("//a[@class='btn btn-block btn-success']")
end
于 2013-10-24T07:48:00.957 に答える