TL;DR

やったこと

bundlerspec コマンドの使い方をいつも忘れるのでメモしておきます。

bundle使ってgem管理

$ mkdir foo && cd foo
$ bundle init
$ cat Gemfile
# A sample Gemfile
source "https://rubygems.org"

# gem "rails"
group :development, :test do
  gem 'rspec'
  gem 'capybara'
  gem 'capybara-webkit'
  gem "poltergeist"
end
$ bundle install

テストすることが目的のプロジェクトなのに、developmenttest の時だけ RSpec などの gem をインストールするのは変な気がしますが、とりあえずこのままで。

テスト作成

$ rspec --init
$ cat spec/test_spec.rb 
require 'spec_helper'
require 'capybara/rspec'
require 'capybara/poltergeist'

Capybara.javascript_driver = :poltergeist
Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, js_errors: true, timeout: 30)
end

Capybara.configure do |config|
  config.run_server = false
  config.default_driver = :poltergeist
  config.app_host = 'http://tsmsogn.github.io'
end

describe '/', type: :feature do
  subject { page }
  before { visit('/') }

  it 'Title' do
    expect(page).to have_title 'u.find.any?'
  end
end
$ bundle exec rspec
.

Finished in 5.31 seconds (files took 1.9 seconds to load)
1 example, 0 failures

いいみたいです。

rakeでテストが走るように

Travis CI ではデフォルトで rake が実行されるので、その際にテストが走るように Rakefile を書きます。

$ cat Rakefile 
require 'rspec/core/rake_task'

RSpec::Core::RakeTask.new(:spec)

task :default => :spec
$ rake
.

Finished in 4.6 seconds (files took 1.27 seconds to load)
1 example, 0 failures

おkみたいです。

Todo

  • Ruby >= 2.0.0, < 2.2.2 対応