Size: a a a

2019 December 31

BT

Bohdan Turchyk in PHP
Bohdan Turchyk
сверху предлагаемый вариант, снизу второй вариант
источник

MM

Maksim Masiukevich in PHP
https://github.com/php-service-bus/service-bus/blob/v4.0/tests/Application/Kernel/ServiceBusKernelTest.php#L158
аще наплевать, какая там цепочка вызовов. Ну, тип, что мне даст знание о том, какие методы дёрнулись, если мне важно узнать, было ли выполнено ожидаемое действие?)
источник

BT

Bohdan Turchyk in PHP
@evgrom вот так будет лучше.
источник

BT

Bohdan Turchyk in PHP
еще раз - это все исходит из предположения, что я знаю, что я делаю в bar
это то самое завязывание на реализацию - но на стабильную реализацию aka метод, который читает что-то из базы - я знаю, в каком формате я получу ответ
источник

k

knopkod4v in PHP
Sergey Protko
как его можно проверить? оч просто:


// precondition (цепочка рефералов на 10 человек например)

$calculateFee(['user-9', 'user-8', 'user-7', 'user-6', 'user-5'])->shouldBeCalled()->willReturn([]);

$referal->forReferalChain($calculateFee);
но можно же проверить сумму, которую возвращает forReferalChain, что она соответствует сумме только первых 5 реферралов 🤔
источник

ЕР

Евгений Ромашкан in PHP
Bohdan Turchyk
@evgrom вот так будет лучше.
Это не отвечает на вопрос, куда делся if
источник

MM

Maksim Masiukevich in PHP
пока отвечал на вопрос, его стёрли..
источник

MM

Maksim Masiukevich in PHP
в примере фесора мне похуй, дрёнулся метод калькулятора, или нет. Есть результат
источник

BT

Bohdan Turchyk in PHP
Евгений Ромашкан
Это не отвечает на вопрос, куда делся if
if поднялся на уровень выше в стеке вызовов
источник

SP

Sergey Protko in PHP
Dmitry S
стандартный кэйс для моков, с той же проблемой что раскрывается внутренняя реализация
где в моем примере мок раскрывает детали реализации? тот факт что твой класс зависит от зависимости? ты ее в аргументы передаешь, так что в общем и целом все ок
источник

ЕР

Евгений Ромашкан in PHP
Хотя на самом деле очевидно, что он будет выше
источник

BT

Bohdan Turchyk in PHP
я и не говорил, что его не будет вообще
источник

ЕР

Евгений Ромашкан in PHP
Bohdan Turchyk
if поднялся на уровень выше в стеке вызовов
Тестить ты его будешь, не?
источник

BT

Bohdan Turchyk in PHP
буду
источник

BT

Bohdan Turchyk in PHP
но я не буду проверять, вызвал ли я функцию
источник

BT

Bohdan Turchyk in PHP
в этом случае мне плевать
источник

BT

Bohdan Turchyk in PHP
(да, в bar должна быть ссылка как входящий аргумент и void, пока писал - забыл об этом)
источник

DS

Dmitry S in PHP
Sergey Protko
где в моем примере мок раскрывает детали реализации? тот факт что твой класс зависит от зависимости? ты ее в аргументы передаешь, так что в общем и целом все ок
потому что проще передать реальный сервис и сравнить с тем какой ты ожидаешь получить
источник

ЕР

Евгений Ромашкан in PHP
А if который
if($doMoreStuff)
?
источник

SP

Sergey Protko in PHP
Dmitry S
стандартный кэйс для моков, с той же проблемой что раскрывается внутренняя реализация
грубо говоря то что моя штука должна посчитать список рефералов и передать его зависимости это часть контракта которую я и проверяю.

И важно тут то что этот конракт довольно стабилен. Если я захочу дополнительную логику добавить в общем и целом мне не придется "чинить тесты". Чинить тесты придется только если поведение поменялось
источник