2016-11-18 5 views
0

モックとスタブでテストしていますが、出力にnilが残っています。私は、それがassignsメソッドの問題であるかどうかはわかりません。私はこの種の問題をどのようにデバッグすべきかも知っていますか? rspec-railsを使用しています。3.5.2ありがとうございます。メソッドを割り当ててRSpecでnilを返す

失敗試験:

describe 'guest user' do 
    describe 'GET index' do 
    let(:achievement) { instance_double(Achievement) } 

    before do 
     allow(Achievement).to receive(:get_public_achievements) { [achievement] } 
    end 

    it 'assigns public achievements to template' do 
     get :index 
     expect(assigns(achievement)).to eq([achievement]) 
    end 
    end 
end 

def index 
    @achievements = Achievement.get_public_achievements 
end 

get_public_achievements達成モデルにおけるコントローラのインデックスアクション

def self.get_public_achievements 
    // empty method it's fine 
    end 

エラー:

1) AchievementsController guest user GET index assigns public achievements to template 
Failure/Error: expect(assigns(achievement)).to eq([achievement]) 

    expected: [#<InstanceDouble(Achievement) (anonymous)>] 
     got: nil 

    (compared using ==) 

答えて

2

assignsは、記号で示されています。

expect(assigns(:achievements)).to eq([achievement]) 
+0

この問題を解決していただきありがとうございます。しかし、私は複数形や単数形をいつ使うべきかまだ分かりません。大会はありますか? –

+0

@JeffreyYong:確かに、慣習があります。あなたは小切手の割り当てを知っていますか?これは、コントローラで設定した変数について何かをアサートします。したがって、コントローラで設定した名前を使用してください。 –

+0

素朴な質問を申し訳ありません。私はレールプログラミングにはとても新しいです。 –

関連する問題