Сообщение 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 мы вкинули
Б>Или все же вместо них прокидываются лямбды. (лямбды с упрощенным поведением, т.е. стабы)
Лямбды-стабы
Б>А вот ваш подход не понял.
Б>Если для каждого будет своя лямбда, то что произойдет, если добавится четвертый вызов 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>>
Б>Я не понял, тесты здесь используют реальные зависимости?
Тестовые зависимости, @params это параметры-значения для тестов,
Т.е. у нас тест вызовется столько раз, сколько @params мы вкинули
Б>Или все же вместо них прокидываются лямбды. (лямбды с упрощенным поведением, т.е. стабы)
Лямбды-стабы
Б>А вот ваш подход не понял.
Б>Если для каждого будет своя лямбда, то что произойдет, если добавится четвертый вызов 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 мы вкинули
Б>Или все же вместо них прокидываются лямбды. (лямбды с упрощенным поведением, т.е. стабы)
Лямбды-стабы