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

А кто-нить эмулировал hackney в тестах? Я хочу сгенерить ответ с

client_ref, но что-то ерунду пишу всё время.
При ответе он возвращает {:ok..... client_ref}, который надо body(client_ref) и он достаёт тело ответа.
Что-то никак не могу найти как оно делается.

30 ответов

28 просмотров

мы не трогаем клиент, мы поднимаем фейковый сервер

Зачем эмулировать hackney??

Д.-П. Автор вопроса
Alex Bubnov
мы не трогаем клиент, мы поднимаем фейковый сервер

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

Д. П.
а в общих чертах как подымаете? у меня тут два сер...

примерно так: поднимаем дополнительный эндпойнт в suite setup в тесте регистрируем в глобальном хранилище request-id и желаемый ответ тестируемый код кидает запрос в этот эндпойнт с этим request-id хэндлер эндпойнта идет в глобальное хранилище и достает ответ по request-id

Alex Bubnov
bypass чего и где

Либа такая. Выглядит так Bypass.expect(bypass, "GET", "/file", fn conn -> Plug.Conn.resp(conn, 200, "This is body") end)

Lama Lover
Жесть какая-то. Вы про bypass слышали?

помойка ебаная, если надо разные данные отправлять приходится внешний стейт колхозить

Lama Lover
Либа такая. Выглядит так Bypass.expect(bypass, "GE...

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

Alex Bubnov
а ну у нас кодовая база на эрланге плюс я не очень...

Считает сколько раз вызывалось и всё. Он очень простой

Lama Lover
Ничего не понял

как ты байпасу объяснишь что надо сначала один ответ отправить, а на повторный запрос другой?

Fried Zucchini
как ты байпасу объяснишь что надо сначала один отв...

Через внешний стейт. А в чём тут проблема? Так любой request-reply делается

Lama Lover
Считает сколько раз вызывалось и всё. Он очень про...

ну то есть, два параллельных теста, ожидающих разные ответы ты не сделаешь на нем

Fried Zucchini
как ты байпасу объяснишь что надо сначала один отв...

С моками и всем остальным ничего не сделаешь

Alex Bubnov
ну то есть, два параллельных теста, ожидающих разн...

Нет, параллельные тесты сделаешь. Там разные инстансы мок-сервера поднимаются для каждого теста

Fried Zucchini
ну я и говорю помойка недоделанная

То есть любая тема для интеграционного тестирования в Elixir это недоделанная помойка. Понял

Lama Lover
Нет, параллельные тесты сделаешь. Там разные инста...

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

не в конфиг, а в базу конфигурации, чуть разные вещи

Alex Bubnov
не в конфиг, а в базу конфигурации, чуть разные ве...

Да, это не просто хуйня, а хуйня на блюдце с золотой каёмкой :)

Lama Lover
Да, это не просто хуйня, а хуйня на блюдце с золот...

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

Alex Bubnov
а как ты иначе свяжешь эти адреса с более бизнесов...

А что мешает-то эндпоинт подменить в том месте, которое вы тестируете?

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

Alex Bubnov
мы их не совсем подменяем мы подкладываем под тест...

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

Alex Bubnov
это не юнит-тесты, это где-то между функциональным...

На интеграционном тестировании, тестируется только адаптер. А у адаптера обычно стейта вообще считай нет, поэтому не вижу там проблемы подменить эндпоинт. На функциональном тестировании тестируется пользовательский функционал на готовых данных. Там адаптеры как раз заменяются на моки со статическими ответами Может быть у вас end to end тестирование, где всё на максимально реальных условиях гоняется. Но это вообще самый высокоуровневый вид тестирования, поэтому как-то странно его параллелить на уровне самого приложения. Можно просто запускать несколько изолированных стендов и сэкономить себе кучу седых волос

Lama Lover
На интеграционном тестировании, тестируется только...

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

Alex Bubnov
в такой терминологии это функциональные тесты подк...

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

Lama Lover
Тогда вы бы не мокали внешние сервисы, а вы бы луч...

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

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта