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 mock 或Array 方法有问题吗?Kernal#Array 的文档建议它调用.to_arythen .to_a,但是模拟既不响应,所以它应该像其他对象一样被包装在一个数组中。

4

1 回答 1

0

在较新版本的 RSpec 中已修复。

于 2015-07-31T09:55:04.447 回答