169 похожих чатов

Ребят, такой вопрос. Как вы тестируете методы компонентов, в которых

есть запрос к данным из сервисов. Смотрю на hero tour, там ребята создают тестовый сервис и наследует его от реального, переопределяя его методы.

Я честно говоря, не очень хочу на каждый сервис создавать мок заглушку. К тому же не понимаю, почему нельзя ( или всё таки можно? ) использовать реальные сервисы, которые будут смотреть на мок АПИ

Всем спасибо за советы

23 ответов

22 просмотра

Мок даёт не связывая бэк использовать псевдо данные . Пиши юниты . Или связывай сразу с бэком

Andrew-Ostrovskii Автор вопроса

Мок даёт не связывая бэк использовать псевдо данны...

Но если я буду ранить тесты с мок урлом, скажем ng test -e=test, а тест енв это json моки на моей локальной машине, есть ли мне смысл делать мок сервисы?

Andrew Ostrovskii
Но если я буду ранить тесты с мок урлом, скажем ng...

Да есть . Представь ситуацию у тебя в коде меняется что-то , но функционал тот же и результаты одни и те же. Ты же не будешь писать эти данные ручками и тестировать их ? Это обычно происходит во время рефакторинга. Так вот юниты это те вещи которые принудительно добровольны.

Andrew-Ostrovskii Автор вопроса

Да есть . Представь ситуацию у тебя в коде меняетс...

Так ведь разницы не будет. Что у меня будут реальные сервисы и моки данных по локал урлу, что у меня будут мок сервисы унаследованные от реальных и возвращающие моки. В случае, если в АПИ например будут какие-то изменения, мне придется ручками там и там менять

Andrew Ostrovskii
Так ведь разницы не будет. Что у меня будут реальн...

Обычно соединяют бек когда проект полностью готов . Ну зависит от предпочтения тимлида . Так вот ты как-то должен же проверять код? Что делать писать юниты . На это можно вообще забить , но если проект становится огромным и проверять каждый функционал ручками ты ого-го времени потратишь чем если бы ты сразу писал юниты


Обычно соединяют бек когда проект полностью готов ...

Из-за этого я написал принудительно добровольно ) Хотя словосочетания так себе

Andrew-Ostrovskii Автор вопроса

Обычно соединяют бек когда проект полностью готов ...

Я это понимаю. Я не понимаю, почему мы не можем использовать json моки для сервисов. Ну, вряд-ли на мок АПИ на нашей машине ошибку вернет. Коннекшн тоже вряд-ли разорвется. А если мы будем делать фейк сервисы, которые наследует реальные, и там по сути те же моки напрямую возвращать, то в чем разница с локальным json мок сервером и реальными сервисами в тестах?

Andrew Ostrovskii
Я это понимаю. Я не понимаю, почему мы не можем ис...

Скажи мне что ты понимаешь под локальными JSON и реальными сервисами ?

Andrew-Ostrovskii Автор вопроса

Скажи мне что ты понимаешь под локальными 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

Andrew Ostrovskii
Локальный JSON мок -> сервер на локалхосте, где за...

таки не наследуем, а реализуем схожий интерфес и провайдим

Andrew-Ostrovskii Автор вопроса
xxtux Shvets
таки не наследуем, а реализуем схожий интерфес и п...

В любом из этих двух случаев, есть ли причина, почему использования вместо этого моков на локальной машине - плохая идея?

Andrew Ostrovskii
В любом из этих двух случаев, есть ли причина, поч...

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

Andrew-Ostrovskii Автор вопроса
xxtux Shvets
вместо чего? мок это объект, имитирующий реальный....

Понял. Стало быть, есть ли смысл юзать тестовые данные вместо фейк сервисов?

Andrew Ostrovskii
В любом из этих двух случаев, есть ли причина, поч...

Я не проходил его. Мне кажется наверное есть какие-то функции и для этого и наследуют ... Хотя хз

Andrew Ostrovskii
Понял. Стало быть, есть ли смысл юзать тестовые да...

это разные задачи. в юнит тестах используются моки сервисов, а фейковые данные можно юзать пока апи не готово, например.

Andrew-Ostrovskii Автор вопроса
xxtux Shvets
это разные задачи. в юнит тестах используются моки...

Я понимаю. Соб-сно мой вопрос в том, почему так и к каким проблемам можно придти, если так не делать ( а юзать именно локальные моки )

Andrew Ostrovskii
Я понимаю. Соб-сно мой вопрос в том, почему так и ...

Ты на счёт моков или хард данных для апи ?

Andrew-Ostrovskii Автор вопроса

Ты на счёт моков или хард данных для апи ?

На счёт использования хард данных АПИ в тестах вместо моков сервисов

Andrew Ostrovskii
Я понимаю. Соб-сно мой вопрос в том, почему так и ...

как я понял речь идет о юнитах, там обычно вообще ни с какими джон дела не имеешь, только с моками. скормил просто данные в компонент, он отрендерился, плюс проверил что вызвался нужный метод у сервиса. но сами данные из хттп сервиса в компонент не текут.

Andrew-Ostrovskii Автор вопроса
xxtux Shvets
как я понял речь идет о юнитах, там обычно вообще ...

Ну вот же, мы тут создаем Page, предварительно заранив detectChanges(), тем самым вызвав метод getHeroes() у test-hero.service.ts и заполнив page.heroRows. В getHeroes() как раз мок сервиса с тестовыми данными Т.е. это ведь как раз данные из мок сервиса ( не хттп ) А к каким проблемам может привести, если мы будем использовать тест json данные из хттп? И может ли вообще привести?

Andrew Ostrovskii
Ну вот же, мы тут создаем Page, предварительно за...

проблем не будет, правда это уже не юнит, ну и ладно тащемта

Andrew-Ostrovskii Автор вопроса

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта