Информация об изменениях

Сообщение Re[23]: Что такое Dependency Rejection от 24.12.2023 6:42

Изменено 24.12.2023 7:22 Pauel

Re[23]: Что такое Dependency Rejection
Здравствуйте, Буравчик, Вы писали:

Б>А вот ваш подход не понял.

Б>Если для каждого будет своя лямбда, то что произойдет, если добавится четвертый вызов get? Придется тесты переписывать?
Б>А если код порефакторят и изменят вызовы?

То же самое, что и у вас. Добавили 4й вызов — ваши моки, коих по количеству тестов, отвалятся.
Ведь не вызов добавился, а значение приходит или уходит.
А раз другого варианта, кроме как чере моки-стабы, не нашли, т.к. куча депенденсов, то тесты будут хрупкими.
Все что можно сделать — свести к минимуму код тестов. Я это сделал через лямбды.

Б>Уже сто раз сказал, что для repo.get не проверяется, что он "вызвался с тем или иным параметром".


Вы свой пример мока репозитория видите? Таких вам надо по количеству тестов.
Например "апдейт после гет кидает одно исключение, ожидаемый результат — другое исключение"
Вам все такое надо в своих моках предусмотреть

P>>Нам нужно описать все значения, табличкой. Часть значений протаскиваются через параметры, часть — через лямбды.

P>>У нас их шесть штук, v1,v2,v3, repo1, svc, repo2,
P>>Дальше у вас будет один параметризованый тест типа такого, не знаю как на вашем питоне это выглядит, напишу на жээсе

P>>[code

P>>@test()
P>>@params(
P>> 1,2,3,4,5,6 // и так на каждую строчку в табличке
P>>)
P>>@params(
P>> 8,4,2,1,3,5 // точно так же и исключения прокидывают
P>>)
P>>... сколько строчек, столько и тестов фактически выполнится
P>>"a cool name test name" (v1, v2, v3, repo1, svc, repo2, result) {
P>> let logic = Logic(v1,v2,v3);

P>> let r = logic.run({

P>> load: () => repo1,
P>> load2: () => svc,
P>> ... и так прокидываем все что надо
P>> })

P>> expect(r).to.deep.eq(result)

P>>}
P>>[/code]

Б>Я не понял, тесты здесь используют реальные зависимости?


Тестовые зависимости, @params это параметры-значения для тестов,
Т.е. у нас тест вызовется столько раз, сколько @params мы вкинули

Б>Или все же вместо них прокидываются лямбды. (лямбды с упрощенным поведением, т.е. стабы)


Лямбды-стабы
Re[23]: Что такое Dependency Rejection
Здравствуйте, Буравчик, Вы писали:

Б>А вот ваш подход не понял.

Б>Если для каждого будет своя лямбда, то что произойдет, если добавится четвертый вызов get? Придется тесты переписывать?
Б>А если код порефакторят и изменят вызовы?

То же самое, что и у вас. Добавили 4й вызов — ваши моки, коих по количеству тестов, отвалятся.
Ведь не вызов добавился, а значение приходит или уходит.
А раз другого варианта, кроме как чере моки-стабы, не нашли, т.к. куча депенденсов, то тесты будут хрупкими.
Все что можно сделать — свести к минимуму код тестов. Я это сделал через лямбды.

Б>Уже сто раз сказал, что для repo.get не проверяется, что он "вызвался с тем или иным параметром".


Вы свой пример мока репозитория видите? Таких вам надо по количеству тестов.
Например "апдейт после гет кидает одно исключение, ожидаемый результат — другое исключение"
Вам все такое надо в своих моках предусмотреть

P>>Нам нужно описать все значения, табличкой. Часть значений протаскиваются через параметры, часть — через лямбды.

P>>У нас их шесть штук, v1,v2,v3, repo1, svc, repo2,
P>>Дальше у вас будет один параметризованый тест типа такого, не знаю как на вашем питоне это выглядит, напишу на жээсе

P>>
P>>@test()
P>>@params(
P>>    1,2,3,4,5,6  // и так на каждую строчку в табличке
P>>)
P>>@params(
P>>    8,4,2,1,3,5 // точно так же и исключения прокидывают
P>>)
P>>...   сколько строчек, столько и тестов фактически выполнится
P>>"a cool name test name" (v1, v2, v3, repo1, svc, repo2, result) {
P>>   let logic = Logic(v1,v2,v3);

P>>   let r = logic.run({
P>>      load: () => repo1,
P>>      load2: () => svc,
P>>      ... и так прокидываем все что надо
P>>   }) 

P>>   expect(r).to.deep.eq(result)
P>>}
P>>


Б>Я не понял, тесты здесь используют реальные зависимости?


Тестовые зависимости, @params это параметры-значения для тестов,
Т.е. у нас тест вызовется столько раз, сколько @params мы вкинули

Б>Или все же вместо них прокидываются лямбды. (лямбды с упрощенным поведением, т.е. стабы)


Лямбды-стабы