Size: a a a

Laravel для начинающих

2021 November 19

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
ну по сути вызовы их методов, просто через проверку состояния.

ну типо есть у нас printer
и есть welcomer у которого есть зависимость от принтера и метод hello который пишет в принтер "hello world"
я тестирую этот метод я могу передать или стандартный принтер и потом чекнуть stdaut на наличие ожидаемой строки, или же написать реализацию принтера который сохранит себе в состояние строку а потом просто проверить это состояние после вызова hello
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
в обоих случаях это будет юнит тест метода hello или ты не согласен?
как бы ты тогда сделал это?
источник

A

Adel in Laravel для начинающих
юнит тест и "стандартный принтер и потом чекнуть stdaut на наличие ожидаемой строки" - это очень странное сочетание)
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
ну а почему? по сути мок зависимости это передача "нужной" тебе зависимости, той чье поведение известно, контролируемо и позволяет проверить то что нужно. если этим условиям удовлетворяет существующая реализация а не мок то в чем разница для теста?
источник

D

David in Laravel для начинающих
К примеру если у класса в конструкторе Logger и Filesystem , нужно чтобы Logger внедрился, а Filesystem внедрить нужный(специальный, фейковый , который есть у лары), по типу как в контейнере всё это дело настраивалось , такое возможно?
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
ну так конечно. что тебе это мешает сделать я не понимаю)
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
@Adelf32 Всё? никаких ремарок?
источник

D

David in Laravel для начинающих
просто я не знаю нормально ли так поступать, потому что придется обращаться к контейнеру 🌚 и , как сказал Адель, это уже не юнит-тест
источник

A

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

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
ну как бы если ты меняешь поведение тестируемого юнита то тебе хоть как переписывать его тесты
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
он конечно гуру) но не истина в последней инстанции
источник

A

Adel in Laravel для начинающих
просто приватный метод переехал в зависимость например. поведение непоменялось ни капли
источник

K

Krike in Laravel для начинающих
доброй ночи. как я могу делать пакетную вставку в laravel?
есть переменная array = ['a', 'b']
мне нужно выполнить запрос типо -
INSERT INTO `table`(`text`) VALUES  ('a'), ('b') 
чтобы все слова из массива вставились одним большим запросом
как я это могу сделать?
если пишу Words::insert($array); то выдает ошибку
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
а как это нарушит тест в моем случае?
источник

A

Adel in Laravel для начинающих
никак. только он уже перестал быть unit
источник

K

Krike in Laravel для начинающих
вот ошибка
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
почему?
я как тестировал конкретный метод конкретного класса так и тестирую
источник

A

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

A

Adel in Laravel для начинающих
момент когда класс не тронут а его "юнит" тест упал - это странная хрень
источник

A

Adel in Laravel для начинающих
просто го тебе в голову втемяшил свои тесты, где вы там чуть ли не в консоль печатеете чтото и проверяете там. но это нельзя называть юнит-тестированием.
источник