システムの定型的な配線の多くを処理する MVC フレームワークを使用してアプリケーションを作成しています。具体的には、アプリケーションは、Parsley MVC フレームワークを使用して Flex で作成されます。ただし、質問は言語固有ではありません。
私のプレゼンテーション モデル / コード ビハインド / ビュー コントローラー (名前は何でも構いません) では、次のようなものがあるかもしれません。
[Event(name="attemptLogin",type="com.foo.AttemptLoginEvent")]
[ManagedEvents["attemptLogin"]
public class LoginViewPM {
public function attemptLogin(username:String,password:String):void
{
dispatchEvent(new AttemptLoginEvent(username,password));
}
}
次に、私のシステムの他の場所で、これに応答するコードは次のようになります
public class LoginCommand {
[MessageHandler]
public function execute(attemptLoginEvent:AttemptLoginEvent):void {
// Do login related stuff
}
}
Flex / Actionscript 内では、メタタグがコンパイラによってチェックされないことに注意することが重要です。例えば:
[Event(name="attemptLogin",type="com.foo.AttemptLoginEvent")]
[ManagedEvent["attemptLogin"] // Spelling mistake - metatag is ManagedEvents
public class LoginViewPM {
と
[Event(name="attemptLogin",type="com.foo.AttemptLoginEvent")]
[ManagedEvent["attemtLogin"] // Spelling mistake - event name is wrong
public class LoginViewPM {
上記の 2 つの例では、フレームワークは失敗します。最初の例では、暗黙のうちに失敗します (メタタグが正しくないため、フレームワークは関与しません)。2 番目の例では、何かが間違っていることを部分的に警告するランタイム ログを取得します。
これを考えると、MVC フレームワークの役割に関して、PM での attemptsLogin() メソッドの単体テストの実際的なレベルはどれくらいですか? すなわち:
するべきか:
- AttemptLoginEvent が MVC フレームワークによって管理されていることをテストする
- イベントが送出されたときに LoginCommand がフレームワークによって呼び出されることをテストします。
他のコンテナ/フレームワーク環境では、フレームワークの責任を行使するテストを作成しない傾向があります.(IMHO)これは脆弱なテストにつながります. ただし、コンパイラのチェックが不足しているため、この場合は不当に思えるかもしれません。
考え?