2017-02-20 9 views
2

のために主張する私はRSpecの:複数のは、私がいないコントローラの仕様

私はRSpecのとRailsのコントローラをテストしていたと私は約8アサートと1つのシナリオを持っている...問題を説明しましょう。..

RSpec.shared_examples 'successful payment' do |term_type, years| 
    let(:surgeon_package) { assigns(:surgeon).reload.last_surgeon_package } 
    let(:payment)   { surgeon_package.payments.first } 

    before do 
    put(:update_account, params) 
    end 

    it 'package term must be yearly' do 
    expect(surgeon_package.payment_term.term).to eq(1) 
    expect(surgeon_package.payment_term.term_type).to eq(term_type) 
    end 

    it 'package payments must be one' do 
    expect(surgeon_package.payments.count).to eq(1) 
    end 

    it '...' 
end 

をしかし、あなたが見ることができるように私は、各それに行動:update_accountを要求:「それは」の量でこれだった私がしたので、何をアサートしてもらいたいです。

この問題を解決するにはどうすればよいですか?毎回/ update_accountを要求したくないからです。

グローバル変数? $キャッシュ? 1つの "それ"にコードを戻しますか?思考?

ありがとうコミュニティ

+0

なぜ、 'update_account'アクションを複数回呼び出すのがいいですか?あなたのテストデータを損なわないために。いくつかのレコードを更新しない?それとも、他の理由がありますか? – VAD

答えて

1

あなたのテストは正常です。重大なパフォーマンスの問題がない限り、そのままそのまま残しておきます。

あなたのケーキを食べて食べようとする結び目に惑わされるかもしれませんが、私はいつも誘惑に抵抗してテストコードをシンプルで読みやすい(表現力豊かな)状態に保つことが最善の方法です。

テストが遅すぎる場合は、複数のサンプルを1つにまとめて、複数の期待をすることを検討してください。これは、テストスピードを上げることに賛成してテストレポートを傷つけます。常にトレードオフがあります。

関連する問題