1
# expected
Array(Object.new) # => [Object.new]
Array([Object.new]) # => [Object.new]

# but when using an rspec mock
it = RSpec::Mocks::Mock.new
it.respond_to?(:to_a) # => false
Array(it) # => RSpec::Mocks::MockExpectationError: Mock received unexpected message :to_a with (no args)

これは 1.9.2 でのみ発生します。

to_aモックが応答できないにもかかわらず、Array メソッドが呼び出されているようです。

回避策は次のとおりです。

[it].flatten # => [it]

Rspec モックまたはArray メソッドの障害ですか? Kernal#Array のドキュメントは.to_arythen.to_aを呼び出すことを示唆していますが、モックはどちらにも応答しないため、他のオブジェクトのように配列にラップする必要があります。

4

1 に答える 1

0

RSpec の新しいバージョンで修正されました。

于 2015-07-31T09:55:04.447 に答える