2

@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>)>

こじ開けセッションのペーストビンはこちらで読みやすいかもしれません

私の宝石ファイルはここにあります

配列assigns(:dest).step_items.lastの最後から 2 番目の項目を返しているようです。

結果は再現可能です。私にはバグのように見えます。これは奇妙な RSpec の副作用ですか? これは、acts_as_list の使用に何らかの関係がありますか? いずれにせよ、'last' の結果が間違っているようです。

4

0 に答える 0