2016-07-13 12 views
1

これは単なる仮説的な質問なので、コードはありませんが、rspecでインスタンス変数にアクセスして操作するにはどうしたらいいですか?rspecのインスタンス変数へのアクセス

たとえば、クラス内のinitializeメソッドに@counter変数がある場合、@counterが特定の数である場合、特定のメソッドがtrueを返すようにテストを書く方法を説明します。それが違う場合は、そのメソッドはfalseを返します。

答えて

1
describe Foo do 
    context 'When counter is even' do 
    let(:foo){ Foo.new(4) } 

    specify '#even?' do 
     expect(foo.even?).to be_true 
    end 
    end 
end 

あなたの質問によると、@counterはinitializeメソッドに設定されています。したがって#even?メソッドは@counterをチェックします。

+0

明確にするために、カウンタはそのように設定されません。プレイヤー名は初期化定義の引数になり、初期化するとカウンタは自動的に0に設定されます。プレイヤーがターンした後、カウンターは毎回1つずつインクリメントします。 –

+0

'#has_moved? 'メソッドが必要なように聞こえます。そのメソッドは '@ counter'をチェックします。上記のテストがうまくいきます。 –

+0

よかった。いくつかのコードを試してみるつもりです。ご協力いただきありがとうございます! –

関連する問題