1

Rails アプリケーションのいくつかのテストを作成して、インデックス アクションが結果のページ付けを行っていることを確認しています。テスト用に 25 個以上のオブジェクトを作成したくなかったので (1 ページあたりの既定の項目数は 25)、テストの default_per_page パラメーターを (テスト目的で) より合理的な値に変更しました 2.

これは、私が考えていないベスト プラクティス ルールに違反していますか? それは私の心の中で巧妙なハッキングと恥ずべきクラッジの境界線上に位置しています。

4

1 に答える 1

3

テストの目的を明確に定義する

テストは、コードを実行して維持するためのものであるため、「不正行為」という言葉は少し誤解を招くと思います。そのため、テストの目的を達成するものは、実際には不正行為ではありません。本当の質問は、あなたの実際の目的は何ですか?

実装ではなく、演習の動作

テストの目的が、ページネーションによってページ間でレコードが分割されることを確認することであると仮定しましょう。おそらくあなたのテストは次のように言っています:

it 'should successfully paginate records into 2 pages' do
  # test that pagination creates two pages
end

その場合、フィクスチャ/工場のセットアップを減らしてテストを単純化すると、テストが明確になります。最初のページに 25 個のレコードがあることをテストしていません。ページネーションが結果を 2 ページに分割することをテストしているだけです。予想される動作に従ってテストを構成し、将来別の方法でページ付けする場合に備えて柔軟性を提供する脆弱でないテストを定義しました。

一方、広く使用され、実戦でテストされたページネーション gem を使用する代わりに、独自のカスタム ページネーション コードを作成した場合は、1 ページあたり 25 レコードの 1 つのユースケースだけでなく、すべての境界条件を確実にテストする必要があります。 . ここで関連するすべての順列をテストするには、単一のテストでは確かに不十分です。そのため、それが実際のテストの目的である場合は、それに応じてテストを拡張する必要があります。

于 2012-07-28T22:21:42.397 に答える