いつもユニットテストメインなんですが、重要な箇所についてはブラウザシミュレートしてテストしたいです。
あらためてcapybara + rspecのセットアップをしたので書き残して起きます。今回はwebdriverは使わなかった。
インストール&セットアップ
主にこちらを参考にしました。
http://www.oiax.jp/rails/rspec_capybara_primer/rspec_capybara_the_first_step.html
1 2 3 4 |
group :test do gem 'rspec-rails' gem 'capybara' end |
Railsのアプリケーションルートから下記を実行。
1 2 3 |
$ cd bin $ bundle binstubs rspec-core # bin/rspecが生成される |
1 2 3 4 5 |
$ rails g rspec:install create .rspec create spec create spec/spec_helper.rb create spec/rails_helper.rb |
これはおまけだけどsccafoldするときhelper, viewのspecを自動生成しないようにします。ぼくは主にmodelかcontrollerのspecを書くので。
1 2 3 4 5 |
config.generators do |g| g.test_framework = "rspec" g.helper_specs = false g.view_specs = false end |
1 |
$ mkdir spec/feature |
簡単なspecを書いてみます。
KPTodoという1人専用の振り返りツールを作っているのですが、そのログインページに「KPTodo」というタイトルが出力されていることをテストしています。
KPTodo
https://www.kptodo.tokyo/
1 2 3 4 5 6 7 8 |
require 'spec_helper' describe 'loginページ' do specify 'タイトルの表示' do visit root_path expect(page).to have_css('h1', text: 'KPTodo') end end |
1 2 3 4 5 6 7 8 9 10 |
ENV["RAILS_ENV"] ||= 'test' require File.expand_path("../../config/environment", __FILE__) require 'rspec/rails' require 'capybara/rspec' require 'capybara/rails' include Capybara::DSL RSpec.configure do |config| config.include Rails.application.routes.url_helpers end |
config.include Rails.application.routes.url_helpers
ちゃんとrequireしていないとこの辺のエラーが出た。
1 |
uninitialized constant Rails (NameError) |
Capybara::DSLをincludeしてないとこんなエラー。
1 |
undefined method `visit' for #<RSpec::ExampleGroups::Nested:0x007ffd2132bab0> |
ではrspec実行。
1 |
$ rspec |
DBないよって怒られた。DBとテーブルを作っておこう。
1 2 |
$ rake db:create RAILS_ENV=test $ rake db:migrate RAILS_ENV=test |
もっかい実行。よし。
1 2 3 4 5 |
$ rspec ... Finished in 1.01 seconds (files took 5.84 seconds to load) 1 example, 0 failures |
The following two tabs change content below.

原田 敦
日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。

最新記事 by 原田 敦 (全て見る)
- Rails Engineでブログ機能追加するgemを作る - 2015年3月15日
- WEBエンジニア一人だけでサービスを作りきる方法-夫婦のための自動ごはん予定お知らせサービス「GoHaaan」制作でやったこと - 2015年3月7日
- CentOS6でMariaDBのDynamic Columnsを試してみた - 2015年2月28日