私のプロジェクトでは、スティッキフォームなどのセッション変数を設定およびクリアするクラスSessionManagerがあります。そのクラスのすべてのメソッドは、Silex \ Applicationオブジェクトをパラメータとして取ります。どのようにこれらのメソッドを単体テストできますか?各テストメソッドでSilexアプリケーションオブジェクトを作成しますか? 私はSilexとユニットテストの初心者ですので、これをどう対処するか分かりません。 1つの方法のSilex Applicationをパラメータとするユニットテストメソッド
例:
public static function setMessage($message, $messageClass, Application &$app)
{
// store message as array, with content and class keys
$app['session']->set('message', array(
'content' => $message,
'class' => $messageClass
));
}
本当にアプリケーション全体を渡す必要がありますか?そのパターンは本当に良いではないようです。 setMessageで使用する必要があるサービス/クラスを渡すだけでよいはずです。あなたの場合は、セッションクラスを渡す必要があります。単体テストについて、注入が "複雑な"クラスの場合は、phpunitが提供する疑似データを使用することを検討する必要があります。 – olibiaz