適切な URL でページに到達したかどうかを確認する関数を作成しているとします。ページには「正規の」スタブがあります。たとえば、ページは stackoverflow.com/questions/123 でアクセスできますが、(SEO の理由から) stackoverflow.com/questions/123/how-do にリダイレクトすることをお勧めします。 -i-move-the-turtle-in-logo - 実際のリダイレクトは独自のメソッド (redirectPage($url) など) に安全に含まれていますが、それを呼び出す関数を適切にテストするにはどうすればよいでしょうか?
たとえば、次の関数を使用します。
function checkStub($questionId, $baseUrl, $stub) {
canonicalStub = model->getStub($questionId);
if ($stub != $canonicalStub) {
redirectPage($baseUrl . $canonicalStub);
}
}
checkStub() 関数の単体テストを行う場合、リダイレクトが邪魔になりませんか?
これは、特定の関数が大きくなりすぎて、単体テストの領域を離れて統合テストの世界に入るように見える、より大きな問題の一部です。私の頭の中では、ルーターとコントローラーがこの種の問題を抱えているとすぐに思います。それらをテストすると、それら自体の機能だけに限定されるのではなく、必然的にページの生成につながるからです。
単体テストで失敗するだけですか?