2017-06-07 32 views
1

Railsアプリケーションでは、私はCapeebara Webkitを使ってRSpecを使ってDeleteリンクが動作していることをテストしています。私のRailsでCapybara :: Webkit :: Driverの未定義メソッドaccept_modal

私が持っているテンプレート:

<%= link_to 'Delete', movie_path(@movie), 
         method: :delete, data: { confirm: 'Are you sure?' } %> 

そして、これが私のスペックです:

require 'rails_helper' 

describe "Deleting a movie", js: true do 
    it "destroys the movie and shows the movie listing without the deleted movie" do 
    movie = Movie.create(movie_attributes) 

    visit movie_path(movie) 

    page.accept_confirm do 
    click_link 'Delete' 
    end 

    expect(current_path).to eq(movies_path) 
    expect(page).not_to have_text(movie.title) 
    end 
end 

私はエラーを取得する:

NoMethodError: 
    undefined method `accept_modal' for #<Capybara::Webkit::Driver:0x007febc2214908> 

それは右のドライバ(のWebkitを使用しています)、それはaccept_modalpage.accept_confirmによって呼び出されなければならない)を見つけるようには見えない。

私が使用している:を使用すると、以下のに動作することを

capybara (2.14.0) 
capybara-webkit (1.1.0) 
rails (5.1.1) 
rspec (3.6.0) 
rspec-rails (3.6.0) 

注:

click_link 'Delete' 
page.driver.browser.accept_js_confirms 

をしかし、私はaccept_confirmがない理由を理解したいと思います。

答えて

0

使用しているcapybara-webkitが大変古いです(1.1.0は2013年12月に再リリースされました)。統一されたCapybaraモーダルAPIはサポートされていませんでした(capybara-webkit 1.1.0リリースされました)、Capybara :: Driver :: Baseからドライバクラスを派生させませんでした。なぜなら、機能がまだドライバによって実装/サポートされていない場合には、現在入手できない "NotSupportedByDriverError"最新のcapybara-webkit(capybara 2.14.0+を使用する場合はmasterブランチを使用する必要があります。そうしないとcapybara 2.13.xでスタックされます)

関連する問題