есть запрос к данным из сервисов. Смотрю на hero tour, там ребята создают тестовый сервис и наследует его от реального, переопределяя его методы.
Я честно говоря, не очень хочу на каждый сервис создавать мок заглушку. К тому же не понимаю, почему нельзя ( или всё таки можно? ) использовать реальные сервисы, которые будут смотреть на мок АПИ
Всем спасибо за советы
Мок даёт не связывая бэк использовать псевдо данные . Пиши юниты . Или связывай сразу с бэком
Но если я буду ранить тесты с мок урлом, скажем ng test -e=test, а тест енв это json моки на моей локальной машине, есть ли мне смысл делать мок сервисы?
Да есть . Представь ситуацию у тебя в коде меняется что-то , но функционал тот же и результаты одни и те же. Ты же не будешь писать эти данные ручками и тестировать их ? Это обычно происходит во время рефакторинга. Так вот юниты это те вещи которые принудительно добровольны.
Так ведь разницы не будет. Что у меня будут реальные сервисы и моки данных по локал урлу, что у меня будут мок сервисы унаследованные от реальных и возвращающие моки. В случае, если в АПИ например будут какие-то изменения, мне придется ручками там и там менять
Обычно соединяют бек когда проект полностью готов . Ну зависит от предпочтения тимлида . Так вот ты как-то должен же проверять код? Что делать писать юниты . На это можно вообще забить , но если проект становится огромным и проверять каждый функционал ручками ты ого-го времени потратишь чем если бы ты сразу писал юниты
Из-за этого я написал принудительно добровольно ) Хотя словосочетания так себе
Я это понимаю. Я не понимаю, почему мы не можем использовать json моки для сервисов. Ну, вряд-ли на мок АПИ на нашей машине ошибку вернет. Коннекшн тоже вряд-ли разорвется. А если мы будем делать фейк сервисы, которые наследует реальные, и там по сути те же моки напрямую возвращать, то в чем разница с локальным json мок сервером и реальными сервисами в тестах?
Скажи мне что ты понимаешь под локальными JSON и реальными сервисами ?
Локальный JSON мок -> сервер на локалхосте, где запросы, просто JSON документы, идентичные тем, что отдает АПИ реальный сервис -> сервис, который мы непосредственно используем в приложении ( на примере тура героев, вот этот ) https://stackblitz.com/angular/jxjddgynnyy?file=src%2Fapp%2Fmodel%2Fhero.service.ts Мок сервис, сервис в котором мы наследуем реальный и переназначем методы. На примере тура героев https://stackblitz.com/angular/jxjddgynnyy?file=src%2Fapp%2Fmodel%2Ftesting%2Ftest-hero.service.ts
таки не наследуем, а реализуем схожий интерфес и провайдим
В любом из этих двух случаев, есть ли причина, почему использования вместо этого моков на локальной машине - плохая идея?
вместо чего? мок это объект, имитирующий реальный. жсон моков не бывает, это тестовые данные называется
Понял. Стало быть, есть ли смысл юзать тестовые данные вместо фейк сервисов?
Я не проходил его. Мне кажется наверное есть какие-то функции и для этого и наследуют ... Хотя хз
это разные задачи. в юнит тестах используются моки сервисов, а фейковые данные можно юзать пока апи не готово, например.
Я понимаю. Соб-сно мой вопрос в том, почему так и к каким проблемам можно придти, если так не делать ( а юзать именно локальные моки )
Ты на счёт моков или хард данных для апи ?
На счёт использования хард данных АПИ в тестах вместо моков сервисов
как я понял речь идет о юнитах, там обычно вообще ни с какими джон дела не имеешь, только с моками. скормил просто данные в компонент, он отрендерился, плюс проверил что вызвался нужный метод у сервиса. но сами данные из хттп сервиса в компонент не текут.
Ну вот же, мы тут создаем Page, предварительно заранив detectChanges(), тем самым вызвав метод getHeroes() у test-hero.service.ts и заполнив page.heroRows. В getHeroes() как раз мок сервиса с тестовыми данными Т.е. это ведь как раз данные из мок сервиса ( не хттп ) А к каким проблемам может привести, если мы будем использовать тест json данные из хттп? И может ли вообще привести?
проблем не будет, правда это уже не юнит, ну и ладно тащемта
Понял. Спасибо вам ребята, за ответы
Обсуждают сегодня