RSpec を使用して、gem でクラス レベルのインスタンス変数 (およびセッター) をテストしています。以下をテストする必要があります。
- セッターが使用されない場合は、正しいデフォルト値が提供されます。
- 変数は、セッターを介して正常に更新できます。
ここには明らかに実行順序の問題があります。セッターを使用して値を変更すると、デフォルト値の記憶が失われます。セッター テストの前にそれを変数に保存し、最後に値をリセットすることはできますが、それはすべてのセッター テストが同じプラクティスに従っている場合にのみ私を保護します。
変数のデフォルト値をテストする最良の方法は何ですか?
簡単な例を次に示します。
class Foo
class << self
attr_accessor :items
end
@items = %w(foo bar baz) # Set the default
...
end
describe Foo do
it "should have a default" do
Foo.items.should eq(%w(foo bar baz))
end
it "should allow items to be added" do
Foo.items << "kittens"
Foo.items.include?("kittens").should eq(true)
end
end