我想主張在一個數組包含的元素類,我嘗試以下方法:需要用rspec來匹配元素類的數組嗎?
這並不工作,但它看起來不錯,可讀:
["String", :symbol, Object.new].should =~ [an_instance_of(String), an_instance_of(Symbol), an_instance_of(Object)]
,但給了我下面的錯誤:
Failure/Error: ["String", :symbol, Object.new].should =~ [an_instance_of(String), an_instance_of(Symbol), an_instance_of(Object)]
expected collection contained: [#<RSpec::Mocks::ArgumentMatchers::InstanceOf:0x007f9e6a33dbe0 @klass=String>, #<RSpec::Mocks::ArgumentMatchers::InstanceOf:0x007f9e6a33dbb8 @klass=Symbol>, #<RSpec::Mocks::ArgumentMatchers::InstanceOf:0x007f9e6a33db68 @klass=Object>]
actual collection contained: ["String", :symbol, #<Object:0x007f9e6a33dca8>]
the extra elements were: ["String", :symbol, #<Object:0x007f9e6a33dca8>]
請注意,沒有缺失元素。
這工作,但看起來哈克:
["String", :symbol, Object.new].collect{|x| x.class}.should =~ [String, Symbol,Object]
- 有沒有更好的方式來主張是一回事嗎?
- 爲什麼沒有缺失元素的第一種方式?
不錯..好多了:) 但這隻能回答第一個問題。 –
你應該接受你最喜歡的答案! – akuhn