今日、Ruby on Rails Tutorial最終章を終えたのだが、最後のテストでCapybaraさんにエラーを指摘して頂きました。
その内容がこちら
StaticPages it should have the content 'Sample App'
Failure/Error: page.should have_content('Sample App')
Capybara::ElementNotFound:
Unable to find xpath "/html"
というもの。
そもそもCapybaraってどういうDSLだっけと思い調べてみました。
Capybaraとは、テストの一種で実際にユーザーがそのWebアプリケーションを使用しているかのように、様々なページを遷移しその際にどこか不具合がないか調べるというもの。なので、イメージとしてはその名の如くカピバラさんが自分が組んだ迷路の中をしゃしゃっと移動し行き止まりもしくわ不具合がないかテストすると感じでしょうか?
なので、xpath”/html”が見つからないと教えてくれている訳です。
しかし、ローカルの環境では全く不具合なく使用できてました。
そう、つまりテストの書き方に問題があったのです。
単純にその部分のテストを書いたときにpathの指定をする前にvisitメソッドを書き忘れていたという、なんともどうしようもないミスでした。。。
システムではなくテストを書く段階でのとんでもないイージーミスでした。。。
それにしても、今回のミスを通してCapybaraさんがいったいどういう働きをしているのか分かり、なんなら少し愛着が湧きました笑
追記
俺の場合はvisitを書き忘れるっていうとんでもないイージーミスでしたが、Stackoverflowで調べてみたら、何人か同じエラーで困っていました。
その原因としてはCapybaraとWebratという同じタイプのテストを同時に走らせており、相性が悪いのかそのためにエラーが起きていました。
解決策としては、WebratのGemを削除、bundle updateして再度トライという意見が最も多かったです。
カピバラとネズミは似た者同士仲が悪いのでしょうか?笑