RSpec入門(v3.5.4)
2017年1月19日
Rspecについてはこちらにまとめようと思います。
(ちょいちょい追記予定)
describe
test対象
describe 'Foo' do end
context
testの条件
describe 'Foo' do context 'Bar' do end end
it
test内容
exampleと同じ(シンタックスシュガー)
it 'hoge is foo' do /* .... */ end example 'hoge is foo' do /* .... */ end
let
beforeでも書けるけど、基本的にはletで書いていった方が良さそう
before do @hoge = Hoge.new(foo: 'Foo', bar: 'Bar') end it 'valid' do expect(@user).to be_valid end
let(:hoge) { Hoge.new(foo: 'FOO', bar: 'BAR') } it 'valid' do expect(@user).to be_valid end
expect
expect(foo).to eq(bar) expect(foo).not_to eq(bar) expect(foo).to match /^abc/ expect(foo).to match_array [1,2,3]
subject, is_expected
subject { foo.name } # 宣言 is_expected.to eq('baz')
to
expect(foo).to eq('abc')
to_not, not_to
どっちで書いても同じ。英文法的に使い分けるらしい。
expect(foo).to_not eq('abc') expect(foo).not_to eq('abc')
Matcher
eq()
等しい
expect(foo).to eq('abc')
be
等号、不等号用
expect(foo).to be >= 10
be_a_kind_of
配列かどうか
expect(foo).to be_a_kind_of(Array)
start_with()
aから始まる
expect(foo).to start_with('a')
end_with()
zで終わる
expect(foo).to end_with('z')
and,or
上の2つをつなぐ下記のように
# aから始まってzで終わる expect(foo).to start_with('a').and end_with('z') # aから始まるかzで終わる expect(foo).to start_with('a').or end_with('z')
render_template
expect(foo).to render_template(:show) expect(foo).to render_template("/foo/show")
contain_exactly
expect([4,10,200]).to contain_exactly(200,4,10)
be_json_as
let(:spec) { {"foo" => contain_exactly( {'bar' => 'BAR'}, {'baz' => 'BAZ'} ) } } expect(foo).to be_json_as(spec)
pry-byebug
Gemを追加
group :development, :test do gem 'pry-byebug' end
binding.pry # 処理停止
rspecが停止したところで
[1]pry(#<Class>)> @hoge
のような感じで中身を確認できる
使えるコマンドは