169 похожих чатов

Вопросец про тесты. Есть функция, которая возвращает квадрат числа: def pow(v:

Int) = v * v
А есть функция, которая возвращает площадь круга:
def circle(r: Int) = 3.1415 * pow(r)

Видим, что circle использует pow. А у нас "юнит" тестирование. Как решать?
1) Делаем интеграционный тест?
2) Просим, чтобы в аргумент передавали сразу квадрат числа?
3) Просим, чтобы передавали функцию возведения в квадрат в аргумент?
4) Мутим имплисит, который подставляет функцию возведения в квадрат по умолчанию, который мы можем перегрузить, как если бы это было простым каррированием?

Пример специально упрощён. Общий смысл, что есть простые и хорошие функции типа pow, а есть комплексные типа circle.

2 ответов

42 просмотра

Имхо. 1 - почему нет? если, конечно, скоуп теста не слишком размывается из-за сложности, внешних зависимостей и т.п. 2 - мне не нравится, т.к. где-то вызов pow все равно придется делать и этот код тестировать 3 - хорошо для приватных методов, в публичных интерфейсах быстро превращается в лапшу 4 - есть люди, которые так делают. для сложных случаев, где имеют смысл моки, я бы вообще сделал так: class Cirle(pow: PowInterface) { def circle(r: Int) = .... }

есть ОЧЕНЬ крутая статья на эту тему: https://habr.com/ru/post/331130/

Похожие вопросы

Обсуждают сегодня

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Какое виндузовое сообщение приходит TTabSheet, что риэлайняться контролы на нем, даже у которых парент другой? Ситуация: открываю форму - кнопок нет, перелистываю на другой т...
Катерина Свиридова
7
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
Карта сайта