Почему мы можем тестировать GWT Widget без компиляции в JavaScript? - PullRequest
1 голос
/ 13 сентября 2011

Правильно, я разрабатывал приложение с использованием инфраструктуры MVP, рекомендованной Google в Крупномасштабная разработка приложений и MVP .

Все отлично работает, у меня только одна вещь, которая меня немного раздражает (с точки зрения понимания).

В докладчике класс Widget используется в их примерах, в методах asWidget. Как получилось, что это не представляет проблемы при насмешках над View и выполнении JUnit-тестов на основе JRE? Разве базовый класс Widget не скомпилирован в JavaScript?

Ответы [ 3 ]

2 голосов
/ 13 сентября 2011

Когда вы запускаете свои тесты (без GWTTestCase), это просто простой Java-код.GWT ничего не переводит в JavaScript (это делают только DevMode, Compiler или GWTTestCase), поэтому класс Widget - это тот, который Eclipse (или любой другой) видит и позволяет использовать в вашем коде.

случаи, когда требуется GWTTestCase, это когда вы на самом деле запускаете код, который требует для перевода в JS (или аналогичным образом запускается в "среде браузера" с движком JS, в случае DevModeи GWTTestCase в режиме разработки), то есть, пытаясь вызвать метод JSNI (который оказывается просто native методом в том, что касается Java).
Пока вы не пытаетесь на самом деле используйте виджет, ему не нужен JSNI, поэтому он безопасен.

0 голосов
/ 13 сентября 2011

Вы можете написать свой модульный тест, не вызывая asWidget, или вы можете предоставить представление, которое возвращает ноль для этого вызова.

Таким образом, вы устраняете необходимость JavaScript во время выполнения модульных тестов

0 голосов
/ 13 сентября 2011

Нет, это не во время отладки или в режиме хоста, поэтому вы можете поместить точку останова в eclipse и увидеть ее. Конечно, за сценой есть JavaScript, но для пользователя это всего лишь java, это отображение контролируется движком gwts .

...