ruby 2.6.2
rails 5.1.1
rspec 3.5.8
let(:foge) { Struct.new('foge', :test, keyword_init: true) } let(:foges) do [ foge.new(test: 'test') foge.new(test: 'test2') ] end it do expect(hoge).to match_array foges end
hogeはfogesと同じStructの配列が入ってる(順不同)
なのでこれでテスト通ると思ったのだが、何故かfogesの中身がStructの文字列になってしまってエラーになった…
["#<struct Struct::foge test=\"test\">"]
どうやっても文字列になる。試しにStruct以外(create(:xxx)とか)を配列に入れるとちゃんとオブジェクトになっている。
もうわからんかったので…
let(:foge) { Struct.new('foge', :test, keyword_init: true) } let(:foge1) { foge.new(test: 'test') } let(:foge2) { foge.new(test: 'test2') } it do expect(hoge.to_s).to include foge1.to_s, foge2.to_s end
文字列のincludeで回避した