2017-03-23 15 views
0

私が行ったことのために仕様を設定する際に問題があります。私はこれを手作業でテストしたので、それが望むように動作していることは分かっていますが、依然として仕様が必要かどうかは分かります。コントローラにパラメータを渡すためのrspecテスト

私は選手のインデックスを持っていますし、優先順位の高い選手を割り当てることができるチームのセクションもあります。割り当てを行うことで、インデックスを生成する最初のコントローラから取得します。私はここのparams

ajax: 
    url: "#{admin_players_path(disabled: 'false')}" 
    dataType: 'json' 

を渡していますちょうどAJAX呼び出しがコントローラである持っているチームの部分については

、私はチームのページからのリクエストを占めているそこの条件を持っています。

def index 
    @q = @player.search(params[:q]) 

    if params[:disabled] == 'false' 
     @player = @q.result(distinct: true).enabled 
    else 
     @player = @q.result(distinct: true) 
    end 
    end 

これは基本的に私のアプリ側ですべてのことを行い、うまくいきます。私が通常の指数でプレーヤーを尋ねると、それは私には無効で有効になっていることが示され、優先プレーヤーを割り当てようとすると、有効なプレイヤーのみが表示されます。

私の問題は、そのパラメータが変更されたことを考慮して正しく設定されていないため、私の仕様の周りを回転しています。

context "with a prioritized player set up" do 
    let(:params) { { disabled: false } } 

    let!(:player1) { create(:player, disabled: true, disabled_at: Time.current) } 
    let!(:player2) { create(:player) } 

    it 'returns only enabled players' do 
    get :index, params: params 

    expect(assigns[:player]).to_not include(player1) 
    end 
end 

かかわらず、私はセットアップに自分仕様にしてみてくださいどのように、私は適切な状態に私が好きな方法を取得し、失敗するスペックを取得し維持することはできません。誰かが私がこのもので逃していることを知っていますか?

+0

エラーが発生しているスペックが生成しているというエラーメッセージが表示されずにデバッグするのが難しいため、スペックの出力を送信できますか? – sonna

+0

それは少し難しいですが、私は 'Failure/Error:expect(assigns [:players])to_not include(player1)'というメッセージを表示します。特に、私が苦労しているのは、私の仕様にある条件の反対側をテストすることです。 ' params [:disabled] ==' false ' @player = @ q.result(distinct:true).enabled' コントローラーのセクションが正しく設定されていることは間違いありません。 – kdweber89

答えて

0

これで少し後に、私はこの中で何が必要かを理解することができました。 AjaxのURLで

は私がdisabled: 'false'

に設定のparamsを持っていますが、仕様で、私はlet(:params) { { disabled: false } }

に設定のparamsを持っている問題であるAJAX呼び出しに私は、文字列として設定のものを持っていること、仕様では、それらをブール値として設定しています。

私がしなければならなかったすべてはlet(:params) { { disabled: ‘false' } }

に設定し、仕様はすべて行ってもいいした変更でした!

関連する問題