4

リダイレクトを実行するコントローラ アクションを単体テストする正しい方法は何でしょうか?

更新: 私は CFWheels プロジェクトのコア開発者です。私がこの質問をしている理由は、現在、組み込みのテスト フレームワークの強化に取り組んでおり、CFWheels でこのようなものにアプローチして実装し、開発者がアプリケーションを簡単にテストできるようにする方法を考えているからです。 .

更新:これをテストする方法を見つけました。アクションが完了してディスパッチャに戻された後にリダイレクトを実行するには、ホイール コントローラの内部を少し書き直す必要があるようです。このアプローチの唯一の点は、redirectTo() の後のコードは、事前に適切な予防措置を講じた場合を除いて実行されることです。これには、redirectTo() ステートメントの後に return を配置するか、アクションに条件付きチェックを配置して、redirectTo() コードを他のコードから分離することが含まれます。また、redirectTo() が実行されると、他に何もレンダリングされないことを確認する必要があります。

4

2 に答える 2

3

このようなものは、リダイレクト メカニズムを複数の機能 (a) ターゲット URL を決定する機能と b) リダイレクトを実行する機能に分割すると、テストが非常に簡単になります。

このようにして、functionA を非常に簡単にテストすることができます。また、functionA はとにかくテストしたいものです。あなたが書いたコードです。それはあなたの本当の論理があるところです。FunctionB はあなたのコードではありません。これは ColdFusion の根性であり、CFLocation をテストする意味はあまりありません。

100% のテスト カバレッジを達成するというミッションがある場合は、ロジックのさまざまなブランチをすべて実行する functionA に 10 回のテストを実行し、テリーが提案する方法でリダイレクトを実行する functionB に 1 回のテストを実行できます。したがって、この方法では、10 ではなく 1 つの遅いテストしか得られません。

ファイル システム、Web サービス、http、ftp、電子メールなど、他のシナリオで使用するためにこのアプローチを一般化できます。 "

于 2010-02-22T10:16:50.317 に答える
2

リダイレクトを false に設定して cfhttp を使用して、適切な URL でコントローラーを呼び出すことができます。次に、結果の cfhttp 結果構造体をテストします。リダイレクトによってどこに移動するかに関する情報が含まれているはずです。

于 2010-02-19T13:26:18.163 に答える