Less is Best

rubyが好き。技術の話とスタートアップに興味があります。

capybara-webkitなajaxテストが通らない

capybara-webkitajaxのテストしておりましたが、 解決したとおもったら解決していなかった件。

何度やってもテスト通らなくておかしいなーと思っていましたが、 みごとにはまってました、ハイ

ここに書いてある通りにして、上手く解決

spec_helper.rb

RSpec.configure do |config|
  .
  .
  .
  config.use_transactional_fixtures = false
  
  config.before(:suite) do
    DatabaseCleaner.strategy = :truncation
  end
 
  config.before(:each) do
    DatabaseCleaner.start
  end
 
  config.after(:each) do
    DatabaseCleaner.clean
  end
end

を追加して、無事解決。


したらば、今度はjavascriptのconfirmをテストしなければいけなくなりましたが、通し方が分からない。 検索してみると、どうやら

expect do
   find('#delete_note').click
   page.driver.accept_js_confirms!
end.to change(Note,:count).by(-1)

で、OKらしい!


その後、再びどーしてもテストが通らなくて、どうしたことかと絶望すること数時間() いろいろとググっていると launcyなるものを発見。ここ

save_and_open_page is a nifty way to see exactly what your web page looks like at a certain point. Just insert it anywhere in the test. It’s great for debugging:

つまり、save_and_open_pageに至った時点のページ状態をブラウザで目視で確認することができる!と。 用法も簡単。

it{ save_and_open_page}

と入れるだけ。

早速使ってみたところ、速攻で原因発見しました。 どうやら、リダイレクトされた別のページにずっとspec掛け続けていたようで笑

なんとか、解決してテストを書き続けるのでした。