Size: a a a

2019 August 02

V

V in pro.elixir
Ну в общем, да, есть приватные функции. А почему, собственно, они приватные? Чтобы их не заюзать извне? Ок. А как из этого следует, что мы не должны иметь в принципе возможности их тестировать?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Приватный метод отличается от приватной функции чем? Тем что в ООП есть всякие там наследования, есть всякие правила о том, как инкапсуляция с этим всем играет
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А тут - нету
источник

NM

Nikita Mistyukov in pro.elixir
почему это нету возможности тестировать в принципе? Приватную функцию в модуле юзает какая-то публичная функция модуля. Иначе будет ворнинг. Вот через эту публичную и тестируй)
источник

V

V in pro.elixir
Это ебанина
источник

V

V in pro.elixir
Почему бы не тестировать программу целиком? E2E или как его там. Полностью как чёрный ящик. Зачем в принципе существуют юнит-тесты? Ведь так или иначе вся внутренняя логика может быть отражена через взаимодействие с пользователем.
источник

V

V in pro.elixir
А юнит-тесты нужны затем, чтобы а) разбить программу на юниты б) писать и тестировать юниты отдельно.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
прально
источник

ŹR

Źmićer Rubinštejn in pro.elixir
вот у тебя есть юнит - модуль
источник

V

V in pro.elixir
Почему модуль, а не функция?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Ты все в одном файле пишешь?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
V
Почему модуль, а не функция?
Это довольно странный вопрос
источник

V

V in pro.elixir
Это нормальный вопрос. Кто, когда и почему решил, что я как программист и автор кода (и не только я) не могу сам выбрать минимальный уровень детализации?
Вот пример
defmodule NumberOperations do
   def sum(a, b), do: do_sum(a, b)
   defp do_sum(%Complex{} = a, %Complex{} = b), do: ...
   defp do_sum(a, b), do: a + b
end
Хочу покрыть юнит-тестами функцию для комплексных чисел. Что, её в отдельный модуль выносить что ли?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Нет, ты пишешь тесты для  sum
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Зачем то ты же сделал do_sum приватной
источник

V

V in pro.elixir
Чтобы было понятнее - представь, что под def sum скрывается 40 уровней вложенности. И цикломатическая сложность sum довольно высока.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Тогда ты выносишь do_sum с 20 уровня вложенности вы другой модуль
источник

V

V in pro.elixir
С публичными методами?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
40 уровней вложенности, все из уоторых приватные и вызываются в результате через одну точку входа?
источник

V

V in pro.elixir
Ага
источник