Size: a a a

2020 January 20

VP

Vladimir Petrakovich in Kotlin JVM
Андрей Самойлов
модульный тест требуется написать
А зачем вообще БД в модульном тесте, что он тестирует?
источник

AL

Anton Lakotka in Kotlin JVM
Андрей Самойлов
интеграционный тест написан уже. как раз таки замокать требуется
все же, есть подозрение, что мокать не нужно. а нужно подключаться к чему-то более-менее реальному. либо embedded либо как выше писали testcontainers
источник

АС

Андрей Самойлов in Kotlin JVM
Vladimir Petrakovich
А зачем вообще БД в модульном тесте, что он тестирует?
методы обращения к БД
источник

AL

Anton Lakotka in Kotlin JVM
мокать нужно свои интерфейсы
источник

d

dima in Kotlin JVM
Андрей Самойлов
Всем привет! Пользуюсь Kotlin 1.3 и Reactive Postgres Client
(http://www.julienviet.com/reactive-pg-client/). Как правильно замокать вызов  io.reactiverse.pgclient.PgPool.getDatabaseConnection,  если писать  whenever(pgPool.getConnectionAwait()).thenReturn(connection) тест виснет?
тест тестирует либу
источник

d

dima in Kotlin JVM
не Ваш код
источник

VP

Vladimir Petrakovich in Kotlin JVM
Андрей Самойлов
методы обращения к БД
И как тут поможет мок? Вы будете тестить, как ваш код работает с моком, который ведёт себя именно так, как вы сами напишете, а не как ведёт себя реальная БД.
источник

АС

Андрей Самойлов in Kotlin JVM
Vladimir Petrakovich
И как тут поможет мок? Вы будете тестить, как ваш код работает с моком, который ведёт себя именно так, как вы сами напишете, а не как ведёт себя реальная БД.
нужно проверить, что внутри функции вызываются методы работы с БД в нужной последовательности
источник

VP

Vladimir Petrakovich in Kotlin JVM
Андрей Самойлов
нужно проверить, что внутри функции вызываются методы работы с БД в нужной последовательности
А откуда уверенность, что эта последовательность вызовов сделает именно то, что нужно?
По мне так такие тесты слегка бесполезны и неподдерживаемые.
источник

АС

Андрей Самойлов in Kotlin JVM
Vladimir Petrakovich
А откуда уверенность, что эта последовательность вызовов сделает именно то, что нужно?
По мне так такие тесты слегка бесполезны и неподдерживаемые.
закрепляет изменения. если что-то в коде поменяется и повалятся модульные тесты, станет понятно, где нужно поправить
источник

AL

Anton Lakotka in Kotlin JVM
Андрей Самойлов
закрепляет изменения. если что-то в коде поменяется и повалятся модульные тесты, станет понятно, где нужно поправить
вы уверены? есть подозрение что повалится только тот единственный тест, который будет по-факту копией оригинального метода.
источник

AL

Anton Lakotka in Kotlin JVM
либо мы чего-то не понимаем в вашем случае, либо вы действительно зашли слишком далеко.
источник

VP

Vladimir Petrakovich in Kotlin JVM
Андрей Самойлов
закрепляет изменения. если что-то в коде поменяется и повалятся модульные тесты, станет понятно, где нужно поправить
Ну так он и будет падать при каждом изменении кода, даже если его поведение не меняется.
Это защитит от случайного изменения при рефакторинге, но не больше. Мне кажется, такие тесты не стоят затрачиваемых на них усилий.
источник

AL

Anton Lakotka in Kotlin JVM
Обычно есть некоторый интерфейс с контрактом.

И есть некоторый код, который реализует этот интерфейс, например с использованием ReactivePg.

И тестировать нужно именно контракт этого интерфейса. Скажем store(something); take(something) должны правильно работать.

И для этого базу мокать нельзя. а нужно подключаться к реальной БД (например embedded, in memory) которая сможет исполнить SQL.  

таким образом реализацию можно протестировать на предмет соответсвия контракту.
источник

AL

Anton Lakotka in Kotlin JVM
если же мокать, то можно получить тонну неприятностей. особенно когда тесты будут писать через копирование SQL из тестируемых функций
источник

AL

Anton Lakotka in Kotlin JVM
В крайнем случае можно замокать Row объект, чтобы протестировать свой маппер.
источник

BP

Bogdan Panchenko in Kotlin JVM
источник

BP

Bogdan Panchenko in Kotlin JVM
ого
источник

BP

Bogdan Panchenko in Kotlin JVM
не думал что он на котлине написан)
источник
2020 January 21

VN

Vladislav Navrocky in Kotlin JVM
Roman Q
Есть кто хочет и может проревьюить небольшую статью про создание микросервиса на Quarkus, Kotlin и Gradle (на англ., интересует только техническая часть)?
А есть ссылка на статью?
источник