Я пишу приложение с использованием инфраструктуры MVC, которая заботится о многих типовых схемах нашей системы. Конкретно - приложение написано на Flex с использованием инфраструктуры Parsley MVC. Однако вопрос не зависит от языка.
В моей модели представления / Code-Behind / View-Controller (как бы вы это ни называли) у меня может быть что-то вроде этого:
[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 {
В двух приведенных выше примерах фреймворк потерпит неудачу. В первом примере он молча терпит неудачу (потому что метатег неверен - следовательно, фреймворк никогда не включается). Во втором примере мы получаем некоторую регистрацию времени выполнения, которая частично предупреждает нас, что что-то не так.
Учитывая это, каков прагматический уровень модульного тестирования для метода tryLogin () в PM с учетом обязанностей инфраструктуры MVC? То есть:
Должен ли я:
- Проверка того, что AttemptLoginEvent управляется инфраструктурой MVC
- Проверьте, что LoginCommand вызывается платформой при отправке события.
В других средах контейнеров / фреймворков я не пишу тесты, которые выполняют обязанности фреймворков, так как (ИМХО) это приводит к хрупким тестам. Однако, учитывая отсутствие проверки компилятором, в этом случае это может показаться оправданным.
Мысли