Сложность подхода к разработке через тестирование в AngularJS с использованием Jasmine и Karma
У меня возникают трудности с началом разработки на основе тестирования в AngularJS с использованием среды тестирования Jasmine. У меня был большой опыт использования PHPUnit, и я очень доволен им. Хотя я не нашел такой же легкости в разработке на AngularJS с использованием Jasmine.
Я читал статьи и руководства, смотрел видео, просматривал вопросы Stackru. У меня все еще есть проблемы с получением нужного потока слов или с процессом мышления.
В чем заключается мыслительный процесс, который нужно пройти, приближаясь к разработке на основе тестирования в AngularJS?
Или, другими словами, что это за процесс, который можно использовать при приближении к разработке через тестирование в AngularJS?
В частности, какие шаги существуют в процессе? Начать с контроллера, вида или модели?
Какие компоненты кода я прохожу, проходя этот процесс?
Я ищу мыслительный процесс, который повторяется для создания надежных модульных приложений в различных областях. Пожалуйста, перечислите конкретные ресурсы, если они у вас есть.
3 ответа
FWIW, вы могли бы пройтись по моему примеру кода для одного из моих курсов Pluralsight. Это был первый проект AngularJS, который я когда-либо писал, и я использовал Test-Driven Development с Jasmine и Karma.
Чтобы помочь мне с моим собственным мыслительным процессом, я создал много небольших коммитов, и всякий раз, когда происходило что-то интересное, я пытался документировать это в своих сообщениях коммитов. Возможно, вы захотите просмотреть коммиты, чтобы понять, как я прошел через это.
Поскольку я основал свою кодовую базу на angular-seed, первые много коммитов в моем репозитории - это коммиты из angular-seed. Это мой первый коммит.
Вероятно, в моей кодовой базе много ошибок, так как я учился по ходу обучения, поэтому я не утверждаю, что это примерный код AngularJS, но я не слишком огорчен этим.
Я абсолютно готов исправить это, так как я не эксперт, но мой опыт показывает, что на самом деле проще начать с маршрутизатора, потому что я часто знаю больше о маршрутах, которые приложение предложит чем что-либо еще.
Каждый маршрут нуждается в контроллере и шаблоне. Так что, что бы ни было правдой, у меня будет контроллер для каждого из маршрутов. Таким образом, я могу быстро составить тесты для каждого контроллера. Не то чтобы тесты поначалу много тестировали (может быть, просто наличие контроллеров). Вы также можете легко написать тест для маршрутизатора.
Затем, возможно, принимайте по одному контроллеру за раз, выписывая тесты для поведения, которое каждый из них должен реализовать, затем реализуя поведение.
На каком-то этапе, вероятно, будет лучше абстрагировать некоторые из этого поведения от контроллеров, превратив его в сервисы. Тогда услуги могут быть проверены.
Я новичок в написании приложений AngularJS, но я следую строгому циклу TDD в коде, который я разрабатываю. Я обнаружил, что Angular - одна из моих любимых JS-сред для тестирования, потому что, похоже, она основана на идее тестирования.
Лично я начинаю с сквозного теста, который может касаться информации реальной учетной записи (но не действующей учетной записи), которая описывает функцию, которую мне нужно создать на высоком уровне. После того, как я почувствую себя комфортно с тестом более высокого уровня, я начну создавать тесты для модели. Я стараюсь хранить немного логики в контроллерах или представлениях, чтобы в моих моделях было больше тестов, которые проверены сквозными тестами.
Мне нравится макет Марка, упомянутый выше из его кода. Я немного рассказал о своем опыте использования AngularJS в цикле TDD.