
Stas
13.08.2018
12:57:53

Sasha
13.08.2018
13:13:01
А как вы тестируете поля формы? Например, есть компонент с require: 'ngModel', который по сути является кастомным полем формы. Как в этом случае в юнит тестах просимулировать поле формы в ngModel?
Блин, мои вопросы всегда игнорят)

Константин
13.08.2018
14:13:32

Google

Константин
13.08.2018
14:13:48
что значит "поле формы в ngModel"?

Sasha
13.08.2018
14:14:20

Константин
13.08.2018
14:15:01
ты хочешь протестировать наличие значения аттрибута ng-model или какую-то бизнес логику связанную с этим значением?

Denis
13.08.2018
14:16:04

Sasha
13.08.2018
14:16:34

Denis
13.08.2018
14:16:39
ты должен мочь переписать на другой фреймворк компонент не переписывая тесты
тесты отражают спецификацию

Sasha
13.08.2018
14:17:13

Denis
13.08.2018
14:18:52
то что значение должно быть типа ngModelController это не бизнес правило, мокай эту имплементацию

Константин
13.08.2018
14:19:20

Sasha
13.08.2018
14:19:20
Дк вот я и спросил, как ее замокать

Denis
13.08.2018
14:19:24
>все сопуствующие аттрибуты, типа $setViewValue()
это не бизнес правило

Sasha
13.08.2018
14:21:35
А как тогда тестировать общее взаимодействие? Например, у меня компонент - кастомное поле в форме. Вся бизнес логика в сервисе, там проблем нет с юнит тестами, но проверки лайфхуков в самом компоненте так же нужно делать. Вдруг они где-то дважды триггерятся и прочее

Google

Denis
13.08.2018
14:21:38

Sasha
13.08.2018
14:22:56

Denis
13.08.2018
14:29:36
Общее взаимодействие это вне зоны юнит тестов. Юнит тесты это тесты в изоляции.
Насчёт стейтфул компонентов, тестируй как раз таки стейт, к примеру какой стейт компонента должен быть после его создания, какой после определенных взаимодействий, ну и тестирование по спеке самого хтмл(но это тема обширнее т.к не хочется иметь зависимость от реализации верстки, можно вводить специальные атрибуты например)
Если у тебя юнит тесты проходят на компонент, но хуки не в изоляции не срабатывают, то это проблема скорее не в самом компоненте

Sasha
13.08.2018
14:31:35

Denis
13.08.2018
14:35:40
https://stackoverflow.com/a/45601995/887925
вообще конечно это видимо просто проблема первого углового

Sasha
13.08.2018
14:38:59
Что-то боль какая-то все время с первым ангуляром

Denis
13.08.2018
14:39:38
а весь анг1 в плане тестирования это боль
изкоробки нет ничего

Sasha
13.08.2018
14:40:38
Я просто привык к тому что - пишешь тест, запускаешь и так, пока все не заработает как надо. Не перезагружая страничку.

Denis
13.08.2018
14:41:28
если что-то совсем плохо тестируется, то я просто не пишу тесты
тут как бы если гнаться за 100% кавередж
получится такая ситуация что ты делаешь 80% для 20%
лучше делать 20% для 80% кавереджа

Sasha
13.08.2018
14:42:12
Просто так быстрее разрабатывать, чем страничку перезагружать
Я если честно не особо фронтендер, но вот иногда приходится погружаться)

Denis
13.08.2018
14:43:21
вы там до сих пор не захантили на первый угл за 25$ час?)

Google

Sasha
13.08.2018
14:45:33
У нас просто часть приложений инфраструктуры на реакте и два на 1.5 ангуляре

Denis
13.08.2018
14:52:22
Если не трудно и вы до сих пор хантите, можешь скинуть в личку больше специфики, но вообще предложение писать на анг1 совсем не привлекательно звучит, но может у вас там продукт интересный

Sasha
13.08.2018
14:58:47

Denis
13.08.2018
15:00:32
если у вас там каноничный 1.5, то на 6ку будет проще чем на реакт. Если там есть контроллеры на 3к строк, то только в мусорку и на реакт)

Sasha
13.08.2018
15:01:43

женя
13.08.2018
18:39:15

Sasha
13.08.2018
18:40:05

женя
13.08.2018
18:44:24
честно для фронта я особо не пишу, потому что это сьесть кучу времени, бек вот полностью покрываю, так что это такое, если бизнес готов только за это платить
а чаще бывает, нужно что-то сделать, на чем может бизнес заработать, как можно быстрей

Andrey
13.08.2018
18:48:01
много вижу тех людей которые пишут для важных вещей e2e тесты
а фронт ну мало покрывают, бекенд нужно, но как сказали выше

Valery
14.08.2018
07:31:58
В rootScope хранится информация о залогиневшемся юзере, в контроллере одно поле используется вот так
$scope.master.email = $rootScope.user ? $rootScope.user.email : "";
и master.email отображается в инпуте на странице. Пробле в том, что эта информация подтягивается туда при первой загрузке страницы, и если юзер не был залогинен в этот момент, то когда он пройдет процесс авторизации и в rootScope о нем онформация появится, то в $scope.master.email ее по прежнему не будут. Что бы она там появилась надо обновлять страницу. Как это можно исправить?

voix
14.08.2018
07:51:51
Попробуй через $watch или просто $scope.$apply() =)
Только вотчеру второй аргкмент не забудь тру передать.

Valery
14.08.2018
07:54:58
а можно поподробней, куда это надо написать?
все, кажется разобрался

Combot
14.08.2018
07:58:02
Valery (0) увеличил репутацию voix (1)

женя
14.08.2018
09:03:36

Google

женя
14.08.2018
09:07:24
руки вам надо ломать, что одному что другому

voix
14.08.2018
09:17:24
Хз, я с ангуляром только в кибане работаю и мне казалось, что то, как там написано - нормальная практика.
Но тебе виднее, главное руки не ломай.
Тем более ему надо было отслеживать изменения в объекте. Есть способы лучше?

женя
14.08.2018
09:40:45

Oleg
14.08.2018
09:41:08

Combot
14.08.2018
09:41:08
Oleg Volodin (1) увеличил репутацию женя (1)

Stas
14.08.2018
09:45:35

Admin
ERROR: S client not available

Combot
14.08.2018
09:45:36
Stas (0) увеличил репутацию Oleg Volodin (2)

voix
14.08.2018
09:46:46
Хуки есть только в 1.5. Преимуществ эвентов над вотчем не вижу.

женя
14.08.2018
09:47:41

voix
14.08.2018
09:48:40
В кибане они везде используются и нормально. Я слышал только, что эвентами злоупотреблять не стоит.

Sasha
14.08.2018
09:49:51

voix
14.08.2018
09:50:00
Вопрос же был задан в контексте использования скопов, поэтому можно было сделать вывод, что это ангуляр 1.4. Основываясь на этой инфе, что бы ты посоветовал человеку для отслеживания изменений в объекте? Разве вотч в данном случае не лучший вариант?

Stas
14.08.2018
09:50:14

voix
14.08.2018
09:50:15
Кроме совета поломать руки

женя
14.08.2018
09:51:39

Stas
14.08.2018
09:52:02

Google

Sasha
14.08.2018
09:52:20
Ну не. От 1000+ начинаются подлагивания

Михаил
14.08.2018
09:52:21

Combot
14.08.2018
09:52:23
Михаил ★ (0) увеличил репутацию женя (2)

Stas
14.08.2018
09:52:31
console.log($scope.$$watchersCount);
соврал, при 11к уже тупит

Sasha
14.08.2018
09:53:08
Лучше поставить какое-нибудь расширение для браузера. Удобнее мониторить

женя
14.08.2018
09:53:19
Михаил есть бест практис сколько модуль должен содержать вотчеров.
это если ты делаешь апи для бека, то тебе дают 300мс на ответ и как хочешь так и выкручивайся. вот аналогия

Andrey
14.08.2018
09:53:36

Михаил
14.08.2018
09:53:47

женя
14.08.2018
09:54:31

voix
14.08.2018
09:54:37

Andrey
14.08.2018
09:55:05
вотчеров может быть и много, только они могут легкие объекты смотреть и данные не часто меняются

женя
14.08.2018
09:56:47

Михаил
14.08.2018
09:57:21

voix
14.08.2018
09:58:25
Лан, обед )

Stas
14.08.2018
09:59:32
потестил чуток, при 1.5к вотчеров было видно мини задержку после действия
при 1к еще всё летает

женя
14.08.2018
10:00:04

Stas
14.08.2018
10:00:45

женя
14.08.2018
10:00:52
гугл)