正在研究将@protocol 复制到@dest 的RSpec 测试,并看到了这个:
[26] pry(#<RSpec::ExampleGroups::ProtocolsController::ProtocolCopy>)> @protocol.step_items.count
=> 3
[27] pry(#<RSpec::ExampleGroups::ProtocolsController::ProtocolCopy>)> assigns(:dest).step_items.count
=> 3
[28] pry(#<RSpec::ExampleGroups::ProtocolsController::ProtocolCopy>)> @protocol.step_items[2].note
=> "note3"
[29] pry(#<RSpec::ExampleGroups::ProtocolsController::ProtocolCopy>)> assigns(:dest).step_items[2].note
=> "note3"
[30] displayed an instance variable. Removed for berevity
[31] pry(#<RSpec::ExampleGroups::ProtocolsController::ProtocolCopy>)> @protocol.step_items.last.note
=> "note3"
[32] pry(#<RSpec::ExampleGroups::ProtocolsController::ProtocolCopy>)> assigns(:dest).step_items.last.note
=> "note2"
[33] pry(#<RSpec::ExampleGroups::ProtocolsController::ProtocolCopy>)> assigns(:dest).step_items.last.last?
=> false
[34] pry(#<RSpec::ExampleGroups::ProtocolsController::ProtocolCopy>)>
pry session 的 pastebin 在这里可能更容易阅读。
我的gemfile 在这里。
似乎assigns(:dest).step_items.last
正在返回数组中的倒数第二个项目。
结果是可重现的。对我来说似乎是一个错误。这是一些奇怪的 RSpec 副作用吗?这是否与我对acts_as_list 的使用有关?无论哪种方式,“最后”似乎都是错误的结果。