私は、PHPのページをリファクタリングして、将来的に拡張と保守をやや簡単にし、かなり単純な問題に取り掛かりました。リファクタリングされたPHPコードで実行を停止しますか?
私は(3
largemethodに一つの方法を分割しているが)このようなものになっています:
nowsmallmethod(){
doSomeChecks();
assignProduct();
giveFeedbacktoUser();
}
これは、すべて良いですが、よく、私が午前問題はdoSomeChecks(です) ;
doSomeChecks(){
if(something that shouldnt be true is true){
return Controller->redirectBk();
}
}
問題の核心は、nowsmallmethod()が完了したときにコントローラ-redirectBkが最初にリダイレクトすることです。つまり、テストに失敗した場合でもユーザーに製品が割り当てられます。私はSilverstripeと呼ばれるPHPフレームワークを使用しているので、Controller-> redirectBk()の動作を実際に変更することはできません。私が自分のメソッドでチェックをしなかったなら、 "return Controller-> redirectBk();"実行を停止してリダイレクトします。 テストが失敗したときにnowsmallmethod()で実行を停止する最良の方法は?私はエラーのステータスコードを返すことができ、実行を停止することができたが、それは醜い方法と思われる。よりエレガントな方法はありませんか?もう一つのオプションはdoSomeChecks()、return(return $ controller-> redirectBk())でこれを返すことができますが、これは有効なPHP構文ではなく、特に読みにくいものではありません。どんな助けでも大変に感謝します。
週末をお楽しみください! 乾杯 ニック
これは実際には機能的にはエラーコードを返すことと同じです。私はちょうど良い方法があるかもしれないと思ったが、そうでないかもしれない。この場合、失敗したテストは$ controller-> redirectBk()を設定し、falseを返す必要があります。あなたの提案を歓迎する – Nick