RSpec3から結構選択肢があるようなので一覧表にしてみる
環境
$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin18]
$ bundle exec rspec -v
RSpec 3.8
- rspec-core 3.8.0
- rspec-expectations 3.8.2
- rspec-mocks 3.8.0
- rspec-rails 3.8.1
- rspec-support 3.8.0
逆引き利用表
利用用途 |
使うマッチャ |
配列の内容が順番含め一致するか |
eq , match |
期待する値が配列に含まれているか |
include |
順番は気にしないが、配列の中身が同じか |
match_array |
指定する要素が配列にすべて含まれているか |
contain_exactly |
異なるマッチャを使って検証したいか |
match |
記述例
RSpec.describe "array_match_sample" do
let(:demo_array) {[1, "example", variable]}
let(:variable) {:symbols}
it "eqで内容が==でtrueを返す状態であるかを確認する" do
expect(demo_array).to eq([1, "example", variable])
end
it "matchで同一なものかを確認する" do
expect(demo_array).to match([1, "example", variable])
end
it "includeで配列に含まれているかを検証する" do
expect(demo_array).to include("example")
expect(demo_array).not_to include("example2")
end
it "match_arrayで順番は気にせず同一の配列かを検証する" do
expect(demo_array).to match_array(["example", 1, :symbols])
expect(demo_array).not_to match_array(["example", 1, :symbols, "huge"])
end
it "contain_exactlyで指定した値がすべて含まれるかを検証する" do
expect(demo_array).to contain_exactly("example", :symbols, 1)
expect(demo_array).not_to contain_exactly("example", :symbols)
end
it "matchとコンポーザブルマッチャを使って型を検証する" do
expect(demo_array).to match([be_kind_of(Integer), be_kind_of(String), be_kind_of(Symbol)])
end
end
参考リンク