Задать вопрос

Как написать unit тест для функции, которая вызывает другую функцию?

Предположим, есть файл utils.ts такого вида (совсем утрированный пример), который надо протестировать с помощью Jest:
export function a(param: number): void {
    const data = param * 2;
    b(data);
}

export function b(param: number): void {
    console.log(`This is param: ${param}`);
}

Функция b что-то делает с данными и может что-нибудь вернуть, с ее тестированием никаких проблем не будет. Вопрос в том, что делать с функцией a, которая может делать какие-то преобразования, но которая вызывает функцию b. Нужно либо как-то мокнуть b, либо отловить ее вызов. Была идея сделать так чтобы все функции принимали в себя в качестве аргументов все другие функции, которые они вызывают (что-то вроде dependency injection), но тогда во-первых получится, что все функции будут принимать коллбэки, а это не так легко читается, во вторых функции которые вызываются самыми первыми должны будут принимать весь код остальной программы в виде гигантского списка коллбэков. И еще такая проблема, что в конкретно данным случае, поскольку a вызывает только b, можно было бы сделать, чтобы a возвращала значение и b вызывалась снаружи, но в общем случае a может вызывать много разных функций и тогда это решение не подойдет. Может быть есть другой способ все это организовать, не создавая DI?
  • Вопрос задан
  • 267 просмотров
Подписаться 1 Простой 7 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
17 янв. 2025, в 12:21
7000 руб./за проект
17 янв. 2025, в 12:13
10000 руб./за проект
17 янв. 2025, в 12:05
60000 руб./за проект