@angular_js

Страница 301 из 325
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
что значит "поле формы в ngModel"?
То есть пробрасывается ngModelController.

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

Denis
13.08.2018
14:16:04
Блин, мои вопросы всегда игнорят)
они очень странные, юнит тесты по сути не должны вообще на такие вещи как ngModel полагаться

Sasha
13.08.2018
14:16:34
ты хочешь протестировать наличие значения аттрибута ng-model или какую-то бизнес логику связанную с этим значением?
Бизнес-логику, связнную с этим значением. Но это значение должно быть типа ngModelController и иметь все сопуствующие аттрибуты, типа $setViewValue() и прочее

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

тесты отражают спецификацию

Sasha
13.08.2018
14:17:13
они очень странные, юнит тесты по сути не должны вообще на такие вещи как ngModel полагаться
С чего? А как тестить компонент тогда, у которого есть require: ngModelController?

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

Константин
13.08.2018
14:19:20
С чего? А как тестить компонент тогда, у которого есть require: ngModelController?
Согласшусь с Денисом М. о том, что компоненты должны быть инкапсулированы и взаимодействовать с тестами на уровне set/get value

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

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

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

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

Если у тебя юнит тесты проходят на компонент, но хуки не в изоляции не срабатывают, то это проблема скорее не в самом компоненте

Denis
13.08.2018
14:35:40
https://stackoverflow.com/a/45601995/887925

вообще конечно это видимо просто проблема первого углового

Sasha
13.08.2018
14:38:59
https://stackoverflow.com/a/45601995/887925
Спасибо, видел это. Думал, вдруг тут знают что-то менее костыльное.

Что-то боль какая-то все время с первым ангуляром

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
вы там до сих пор не захантили на первый угл за 25$ час?)
Неа. Но на другой проект захантили(а там реакт)

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

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

Sasha
13.08.2018
14:58:47
Если не трудно и вы до сих пор хантите, можешь скинуть в личку больше специфики, но вообще предложение писать на анг1 совсем не привлекательно звучит, но может у вас там продукт интересный
Да на самом деле, уже не стоит дальше писать на нг1. Пора мигрировать. Конечно заманчиво на шестерку, но это наверное будет реакт, потому что остальные проекты на нем

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

женя
13.08.2018
18:39:15
А как вы тестируете поля формы? Например, есть компонент с require: 'ngModel', который по сути является кастомным полем формы. Как в этом случае в юнит тестах просимулировать поле формы в ngModel?
Если тебе нужно настроить тестирование хорошо. качни угл 6 посмотри как там karma-jasmine настроено, (запускается сервер и тесты само перекомпилируются) и будет тебе сила)

женя
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)

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

voix
14.08.2018
09:17:24
Хз, я с ангуляром только в кибане работаю и мне казалось, что то, как там написано - нормальная практика.

Но тебе виднее, главное руки не ломай.

Тем более ему надо было отслеживать изменения в объекте. Есть способы лучше?

женя
14.08.2018
09:40:45
Хз, я с ангуляром только в кибане работаю и мне казалось, что то, как там написано - нормальная практика.
есть hooks, есть events. watch Это самый крайний вариант. может еще можно что то подумать отталкиваясь от логики, ее я не видел

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
Хуки есть только в 1.5. Преимуществ эвентов над вотчем не вижу.
ну вот когда твое приложение будет тормозить от кол-ва вотчеров, ты увидишь

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
а сколько нужно вотчеров что бы тупить начало?
200+ начинается представление 1500 уже fatal(go))

Stas
14.08.2018
09:52:02
200+ начинается представление 1500 уже fatal(go))
специально сделал, не тупит пока



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

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мс на ответ и как хочешь так и выкручивайся. вот аналогия

женя
14.08.2018
09:54:31
покажи где, в жизни не видел
у меня нет, 200 это край на модуль

voix
14.08.2018
09:54:37
ну нах эти вотчеры, в топку
Как бы решил задачу выше? Вотчеры там идеально подходят.

Andrey
14.08.2018
09:55:05
у меня нет, 200 это край на модуль
ну так это ты сам для себя такой лимит сделал ? нигде же не написано в best practice ? я об этом и говорю

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

женя
14.08.2018
09:56:47
Как бы решил задачу выше? Вотчеры там идеально подходят.
если нужно следить я бы использовал kcd-recompile и watcher но опять же, я не видел логику

Михаил
14.08.2018
09:57:21
Как бы решил задачу выше? Вотчеры там идеально подходят.
пока не увидел задачи, но доходило до использования MutationObserver, а что)

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

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

при 1к еще всё летает

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

Страница 301 из 325