
Sergey
23.09.2016
21:36:20

Artur
23.09.2016
21:36:26

Sergey
23.09.2016
21:37:09

Artur
23.09.2016
21:38:19

Google

Artur
23.09.2016
21:38:26
или ты бы не родился

Sergey
23.09.2016
21:38:29

D'
23.09.2016
21:38:40
А я из 90х )

Sergey
23.09.2016
21:38:56

Artur
23.09.2016
21:39:01

Sergey
23.09.2016
21:39:08
И?
Там военная подготовка прямо на улицах идёт

Sergey
23.09.2016
21:39:20

Artur
23.09.2016
21:39:30
ага

Sergey
23.09.2016
21:39:31
если мальчик, то будь добр соточку пожми

Sergey
23.09.2016
21:39:31
И в школах предмет "Защита отечества "

Artur
23.09.2016
21:39:33
библию ещё напишите
с инквизицией

Google

Sergey
23.09.2016
21:40:11

Sergey
23.09.2016
21:40:13
это ты потому такой злой Артур, что в зал не ходишь )

D'
23.09.2016
21:40:17

Artur
23.09.2016
21:40:24
я когда тралю - улыбаюсь )

D'
23.09.2016
21:40:51

Sergey
23.09.2016
21:40:51

Wingman
23.09.2016
21:40:51
Товарищи, а подскажите пожалуйста: как правильно использовать юнит-тестирование при работе с базами?
Даже не так: как правильно использовать юнит-тестирование, когда весь код - это большая обёртка над неким API, реализованным процедурами и функциями oracle? :)
То есть, никаких простых функций типа assertTrue/assertFalse: нужно проверять именно работоспособность сложных вызовов с кучей логической фигни, кучей аргументов. Создавать, изменять, получать обьекты в базе, и т.д. - то есть, никакими моками не обойдешься.
При этом таки очень хочется начать юнит-тестировать, т.к. руками искать узкие места перед обновлениями этого API - задолбало :)
Всё, что гуглится про юнит-тестирование на php, говорит о том, что с базой в юниттестах работать низзя, делайте моки, итэдэ и тэпэ. Но мне явно нужен другой подход. Может, есть чего почитать на эту тему?

Sergey
23.09.2016
21:41:25
ох...php в пятницу в час ночи

Wingman
23.09.2016
21:41:37
ага ;(

Sergey
23.09.2016
21:41:37
парни, я по тестам лошье, ниче ероме ассертов не делал

Artur
23.09.2016
21:41:44
пьятница же рабочий день


D'
23.09.2016
21:42:05
Товарищи, а подскажите пожалуйста: как правильно использовать юнит-тестирование при работе с базами?
Даже не так: как правильно использовать юнит-тестирование, когда весь код - это большая обёртка над неким API, реализованным процедурами и функциями oracle? :)
То есть, никаких простых функций типа assertTrue/assertFalse: нужно проверять именно работоспособность сложных вызовов с кучей логической фигни, кучей аргументов. Создавать, изменять, получать обьекты в базе, и т.д. - то есть, никакими моками не обойдешься.
При этом таки очень хочется начать юнит-тестировать, т.к. руками искать узкие места перед обновлениями этого API - задолбало :)
Всё, что гуглится про юнит-тестирование на php, говорит о том, что с базой в юниттестах работать низзя, делайте моки, итэдэ и тэпэ. Но мне явно нужен другой подход. Может, есть чего почитать на эту тему?
ну не мокай. кто запрещает?


Wingman
23.09.2016
21:43:59
ну не мокай. кто запрещает?
Да в целом подход непонятен. Тупо дёргать все подряд процедуры и смотреть, не вылетел ли эксцепшн... как-то тупо) Ну и, опять же - м.б. есть приёмы какие-нибуть, типа там начать транзакцию в setup / откатить в tearDown, или ещё что-нибуьт как-нибуть
хз, я даже вопросов сформулировать не могу - непонятно, с какой стороны подойти)

D'
23.09.2016
21:44:52

Wingman
23.09.2016
21:45:34
заново сидить базу займет несколько часов :)

D'
23.09.2016
21:45:42
Ну транзакции делай
Если ты не хочешь\можешь покрыть весь функционал тестами, проверяй только результат.

Google

D'
23.09.2016
21:46:13
С несколькими параметрами
1 тест с правильными 1 с неправильными

Wingman
23.09.2016
21:47:11
угу
ну как-то примерно так и представляю

D'
23.09.2016
21:47:40
просто да, когда у тебя куча готового кода, то рефакторить зачастую никто не даст
а покрыть хотя бы часть функционала хочется
поэтому просто проверяй что оно работает и не работает
так хотя бы увернность будет что если сломаешь, то ты заметишь

Wingman
23.09.2016
21:48:33
ну тут мне проще, я часть, работающую с апи, выпилил в отдельный композер-пакет
и почти везде его навтыкал, почти вычистив легаси
но один хрен, никак не подступлюсь)

D'
23.09.2016
21:49:21
ну если времени вагон и хочется поебаться, то вперед

D'
23.09.2016
21:49:38
Сначала пиши простые тесты на работает\не работает
Затем пробуй рефакторить
просто я хз как ты без тестов будешь рефакторить это

Sergey
23.09.2016
21:51:42
Ди единственный кто хорошо шарит в пхп Шоле ?

D'
23.09.2016
21:51:51
мне 15
я не шарю
ты заебал

Sergey
23.09.2016
21:52:15

Google

D'
23.09.2016
21:52:41
* тут была шутка *

Sergey
23.09.2016
21:53:03
Птздуй спать

D'
23.09.2016
21:53:08

Sergey
23.09.2016
21:53:50

D'
23.09.2016
21:54:17

Sergey
23.09.2016
21:54:31

D'
23.09.2016
21:54:35
Не не не

Sergey
23.09.2016
21:54:52

Admin
ERROR: S client not available

D'
23.09.2016
21:55:09
Она же сводная

Sergey
23.09.2016
21:55:31

D'
23.09.2016
21:55:39
Т.е ты мне спиздел?
а бля
какая свободная?
сводная

Wingman
23.09.2016
21:56:04
так ты определись с чем у тебя пробелма?
Хер знает. С определением, в чем у меня проблема, в том числе :)
Ну вот пример: API - к билингу. В билинге - юзер.
Хочу проверить функцию назначения юзеру подписки на тариф.
При этом: у юзера может быть отрицательный баланс; у юзера может отсутствовать оборудование (термин из билинга, к нему прикрепляется тариф); у юзера может быть уже назначен этот тариф; юзеру может быть недоступен этот тариф.
Это, блин, на каждый возможный вариант ошибки ( да я сам их все представить не могу, чо угодно может вылезти ) - нужно в пределах одного (_каждого_) теста создать в БД юзера с кучей отличающихся параметров? Да этож ебаный пиздец)

D'
23.09.2016
21:56:39

Google

Wingman
23.09.2016
21:56:46
пиздец )

D'
23.09.2016
21:56:58
Для этого и придумали всякие умные штуки
сидеры

Wingman
23.09.2016
21:57:02
ну то есть это не пиздец, если код зависит только от тебя
а если от чужой базы - то как-то херово

D'
23.09.2016
21:57:27
так нах тебе функционал чужой базы?
Твой класс что конкретно делает?

Wingman
23.09.2016
21:59:14
Дергает, допустим, процедуру. Но у неё куча параметров, и у обьекта, с которым она взаимодействует, тоже куча параметров.
Хз, как протестить их все — а делать несколько десятков вызовов в базу на каждый тест для создания/удаления обьекта с нужными параметрами кажется пиздец избыточным, не говоря уж о времени выполнения кучи таких тестов

D'
23.09.2016
21:59:30
какую процедуру?
покажи пример
на кошках
дык мокай Hapi
а пля
не
тут по сути тебе только сначала сделать просто проверку на результат
и затем рефакторить это место
ну или сразу рефакторить, я хз
тебе один хер пол проекта переписать надо будет
если у тебя везде такое

Wingman
23.09.2016
22:02:58
что именно рефакторить-то?
вот эта процедура ( SI_USERS_PKG.SI_USER_GOODS_PUT ) — она зашита в API билинга, и я с ней хер чего сделаю и хер изменю

D'
23.09.2016
22:03:29
инжектить hapi через конструктор