環境
- rails(ruby2.1.0, rails4.0.3)アプリ
- mongoDB
railsでソフトウェアを作成するとき、テストにRspecを使っています。
Cucumberも使おうと何回か考えたのですが、テストを記載するコストと釣り合わないなあと感じていて結局は使ったことがありませんでした。なによりDHHが批判しているので使う気が起きませんでした。参考
しかし、今のrails4時代には、Turnipという受け入れテストがメインに変わりつつあるようです。
Turnipの良い点は、Cucumberと異なりRSpecに一本化できることです。これにより管理がかなり楽になるようです。
ざっと見たところ、学習コストも良さそうなので、プロジェクトに導入してみようと思います。
そんなわけでTurnipをテストツールとして使ってみたので、そのメモです。アプリは完成している前提です。
あと、Cucumberの経験がまったくない場合は、Turnipを使うのはかなり厳しいので、以下の本を買って基礎だけは済ませておきましょう。
Turnip導入前には必ずgitなどでcommitしておきましょう。
Gemfile記述
group :test do gem "database_cleaner", ">= 0.9.1" gem "email_spec", ">= 1.4.0" # 以下を追加 gem 'capybara' gem 'capybara-webkit' gem 'poltergeist' gem 'turnip' end
bundle update
Command 'qmake -spec macx-g++ ' not available Makefile not found
bundleに失敗。ここを見るとQtがないのが原因とのこと。
Qt導入
brew upgrade brew install qt
結構時間がかかります。その後、再びbundle update。成功後、spec_helper.rbに以下を記載
# Turnip directory Dir.glob("spec/steps/**/*steps.rb") { |f| load f, true } # Turnip library require 'capybara/dsl' require 'capybara/rspec' require 'capybara/webkit' require 'capybara/poltergeist' require 'rspec/rails' require 'rspec/autorun' require 'turnip' require 'turnip/capybara'
.rspecに以下を追記
-r turnip
specフォルダ以下にfeaturesフォルダとstepsフォルダを作成
cd spec/ mkdir features mkdir steps
featuresフォルダにhoge.featureファイルを作成
touch hoge.feature
viで開いてhoge.featureファイルに以下のテスト内容を記載。書き方はCucumberと同じ
Feature: 戦闘 Scenario: 柔い敵と戦闘 Given "スライム" が現れた! When 勇者の攻撃! Then モンスターを倒した Scenario: 固い敵と戦闘 Given "はぐれメタル" が現れた! When 勇者の攻撃! Then モンスターを倒せなかった
bundle exec rspecで実行
# No such step: '"はぐれメタル" が現れた!' # ./spec/features/hoge.feature:9 戦闘 柔い敵と戦闘 "スライム" が現れた! -> 勇者の攻撃! -> モンスターを倒した # No such step: '"スライム" が現れた!' # ./spec/features/hoge.feature:4 Finished in 3.87 seconds 58 examples, 0 failures, 9 pending
テストで試験が通ったことを確認。次は、実際にtopページのfeatureファイルを記載していきます。
0 件のコメント:
コメントを投稿