Size: a a a

2020 October 03

ПГ

Павел Г. in symfony
The Ant 🐜
потому и сыпятся, потому что тестируете непонятно что ради просто чтобы тесты были...
Сыпятся из-за множества зависисмотей. Я выше писал кейс: добавляем новый функционал, который требует новую зависимоть  - падают все тесты, и их нужно все править. так как у хэндлера изменился конструктор.
источник

ПГ

Павел Г. in symfony
Это банальная проблема сервис классов больших при использовании анемик моделей. Которые имеют потенциал для реализации нового метода потребвать новую зависимость. Тянем ее в конструктор. Падают тесты других методов.
источник

ПГ

Павел Г. in symfony
Но тут решение банальное - разделить на более мелкие независмые сервис классы.
источник

D

Dmitry in symfony
The Ant 🐜
потому и сыпятся, потому что тестируете непонятно что ради просто чтобы тесты были...
при изменении конструктора посыпется что угодно :)
источник

D

Dmitry in symfony
Павел Г.
Сыпятся из-за множества зависисмотей. Я выше писал кейс: добавляем новый функционал, который требует новую зависимоть  - падают все тесты, и их нужно все править. так как у хэндлера изменился конструктор.
нужно править всего один раз, там где создается инстанс для тестирования в setUp
источник

ПГ

Павел Г. in symfony
Dmitry
нужно править всего один раз, там где создается инстанс для тестирования в setUp
Так условия могут быть разные.  Мы по разному мокаем.
источник

ПГ

Павел Г. in symfony
Для одного метода мы сущность из find() отдаем одну, а для другого метода - другую
источник

T🐜

The Ant 🐜 in symfony
find & replace по регулярке... неужели сложно?
источник

D

Dmitry in symfony
Павел Г.
Для одного метода мы сущность из find() отдаем одну, а для другого метода - другую
и чо ? контроллер от этого не зависит. вы просто в контроллер передаете MyFinderRepository
источник

D

Dmitry in symfony
а потом в конкретном тесте уже делаете
expects()->method(find)->willReturn(neededEntity)
источник

D

Dmitry in symfony
The Ant 🐜
find & replace по регулярке... неужели сложно?
я бы поглядел на регулярку которая найдет все создания инстансов и добавит туда мок, создав его выше :)
источник

ПГ

Павел Г. in symfony
Dmitry
и чо ? контроллер от этого не зависит. вы просто в контроллер передаете MyFinderRepository
Контроллер не зависит, Зависит метод который его создает. Если будет какой то prepare в который мы будет отдавать конкретные созданные для этгого зависимости, то изменится этот prepare при добавлении новой зависимости.
источник

D

Dmitry in symfony
Павел Г.
Контроллер не зависит, Зависит метод который его создает. Если будет какой то prepare в который мы будет отдавать конкретные созданные для этгого зависимости, то изменится этот prepare при добавлении новой зависимости.
тут согласен, но без этого никуда. если вы меняете поведение метода, то очевидно что тесты упадут и их надо править. с этим ничего не поделать
источник

VS

Vlad Sobenko in symfony
Dmitry
а потом в конкретном тесте уже делаете
expects()->method(find)->willReturn(neededEntity)
Лучше фейки юзать всегда вместо стабов.
источник

ПГ

Павел Г. in symfony
Спасибо за дискуссию и ответы, с удовольствием продолжил бы, надо уходить :(
источник

D

Dmitry in symfony
Vlad Sobenko
Лучше фейки юзать всегда вместо стабов.
можно вообще моки юзать вместо стабов и фейков :)
источник

IG

Ivan Grigoriev in symfony
Павел Г.
Сыпятся из-за множества зависисмотей. Я выше писал кейс: добавляем новый функционал, который требует новую зависимоть  - падают все тесты, и их нужно все править. так как у хэндлера изменился конструктор.
Если новый функционал добавляется модификацией методов, то это явное нарушение OCP. Хотите так делать - возитесь с тестами: изменили класс - очевидно, что надо менять тесты, его проверяющие.
источник

VS

Vlad Sobenko in symfony
Dmitry
можно вообще моки юзать вместо стабов и фейков :)
Можно, но не нужно. Очень ломкие тесты с ними.
источник

ПГ

Павел Г. in symfony
Ivan Grigoriev
Если новый функционал добавляется модификацией методов, то это явное нарушение OCP. Хотите так делать - возитесь с тестами: изменили класс - очевидно, что надо менять тесты, его проверяющие.
ОСР решается добавлением диспатчера. Этот вариант я выше описывал.
источник

D

Dmitry in symfony
Vlad Sobenko
Можно, но не нужно. Очень ломкие тесты с ними.
вообще нет. но там зависит...не будем спорить по этому поводу
источник