テストの目的を明確に定義する
テストは、コードを実行して維持するためのものであるため、「不正行為」という言葉は少し誤解を招くと思います。そのため、テストの目的を達成するものは、実際には不正行為ではありません。本当の質問は、あなたの実際の目的は何ですか?
実装ではなく、演習の動作
テストの目的が、ページネーションによってページ間でレコードが分割されることを確認することであると仮定しましょう。おそらくあなたのテストは次のように言っています:
it 'should successfully paginate records into 2 pages' do
# test that pagination creates two pages
end
その場合、フィクスチャ/工場のセットアップを減らしてテストを単純化すると、テストが明確になります。最初のページに 25 個のレコードがあることをテストしていません。ページネーションが結果を 2 ページに分割することをテストしているだけです。予想される動作に従ってテストを構成し、将来別の方法でページ付けする場合に備えて柔軟性を提供する脆弱でないテストを定義しました。
一方、広く使用され、実戦でテストされたページネーション gem を使用する代わりに、独自のカスタム ページネーション コードを作成した場合は、1 ページあたり 25 レコードの 1 つのユースケースだけでなく、すべての境界条件を確実にテストする必要があります。 . ここで関連するすべての順列をテストするには、単一のテストでは確かに不十分です。そのため、それが実際のテストの目的である場合は、それに応じてテストを拡張する必要があります。