Это не тестирование, это «поиск вручную на выходе» (известный в бизнесе как LMAO). Более формально это называется «поиск вручную ненормального выхода» (LMFAO). (См. Примечание ниже)
Каждый раз, когда вы меняете код, вы должны запустить приложение и LMFAO для всего кода, затронутого этими изменениями. Даже в небольших проектах это проблематично и подвержено ошибкам.
Теперь масштабируйте до 50k, 250k, 1m LOC или более и LMFAO при каждом изменении кода. Мало того, что это неприятно, это невозможно: вы расширили комбинацию входов, выходов, флагов, условий, и трудно реализовать все возможные ветви.
Хуже того, LMFAO может означать посещение страниц на страницах веб-приложение, запуск отчетов, просмотр миллионов журнальных строк на десятках файлов и машин, чтение сгенерированных и отправленных электронных писем, проверка текстовых сообщений, проверка пути робота, заполнение бутылки соды, агрегирование данных из сотни веб-сервисов , проверяя контрольный след финансовой сделки ... вы получаете идею. «Выход» не означает несколько строк текста, «вывод» означает совокупное поведение системы.
[/g3]
Наконец, тесты на единицу и поведение определить поведение системы . Тесты могут выполняться сервером непрерывной интеграции и проверяться на правильность. Конечно, возможно, System.out
s, но сервер CI не узнает, является ли один из них неправильным, и если это так, они являются модульными тестами, и вы также можете использовать фреймворк.
Независимо от того, насколько мы хороши, мы считаем, что люди не являются хорошими модульными тестовыми платформами или серверами CI.
Примечание: Как указано (грубо) в комментариях, LMAO является , но в смысле очень ограниченным. Он не может быть воспроизведен каким-либо значимым образом по всему проекту или как часть процесса. Это похоже на постепенное развитие в REPL, но никогда не формализуя эти инкрементные тесты.
Здесь приведена соответствующая документация :
Что если вы хотите управлять навигацией из вашего корневого компонента приложения ? Вы не можете ввести NavController , потому что любые компоненты, которые являются контроллерами навигации, являются дочерними для корневого компонента, поэтому они недоступны для инъекции.
blockquote>Но вы можете использовать Nav
import { Nav } from 'ionic-angular'; //.... export class MyApp { @ViewChild(Nav) nav: Nav; //... //And inside your function //.. this.nav.push('Page1'); //..
В вашем корневом компоненте вы должны использовать Nav, а не NavController. Подробнее здесь: https://ionicframework.com/docs/api/navigation/NavController/#navigating-from-the-root-component
Вы не можете ввести NavController, потому что любые компоненты, которые являются контроллерами навигации, являются дочерними для корневого компонента, поэтому они недоступны для внедрения.
blockquote>Также проверьте реализацию справочного приложения: https://github.com/ionic-team/ionic-conference-app/blob/v3/src/app/app.component.ts