Jest - проверить, вызвана ли одна функция другой - PullRequest
0 голосов
/ 21 января 2019

У меня есть класс, который содержит несколько статических функций. Давайте назовем этот класс allFunctions. allFunctions.makeChanges (a, b, c) вызывает allFunctions.callUpdate ().

Ни одна из этих функций не возвращает никакого значения. Оба они просто модифицируют некоторые аргументы и вызывают функцию, обеспечивающую их.

export class allFunctions {

    public static makeChanges(a, b, c) {
        ...
        this.callUpdate(c, d);
    }

    public static callUpdate(c, d) {
        otherFunctions.makeUpdate();
    }

}

Я хочу проверить, когда вызывается функция makeChanges (), если также вызывается функция callUpdate ().

Я пробовал что-то вроде этого:

import { allFunctions } from '../allFunctions';

describe('simple test', () => {

    it('makeChanges() should call callUpdate()', () => {

        const a = 1, b = 2, ...;

        allFunctions.callUpdate = jest.fn();

        const result = allFunctions.makeChanges(a,b,c);

        expect(allFunctions.callUpdate).toBeCalled();

    });

});

К сожалению, это не работает. Можно ли проверить, вызывает ли одна функция другую? Если это так, что будет лучшим подходом для этого?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Я наконец нашел решение. Мне нужно было использовать шпион вместо jest.fn ();

Решение выглядит так:

import { allFunctions } from '../allFunctions';

describe('simple test', () => {

    it('makeChanges() should call callUpdate()', () => {

        const a = 1, b = 2, ...;

        const spy = jest.spyOn(allFunctions, 'callUpdate');

        allFunctions.makeChanges(a,b,c);

        expect(spy).toHaveBeenCalled();

    });

});
0 голосов
/ 21 января 2019

Код, кажется, все находят, кроме использования слова public в классе. Удалить их.

export class allFunctions {

    static makeChanges(a, b, c) {
        ...
        this.callUpdate(c, d);
    }

    static callUpdate(c, d) {
        otherFunctions.makeUpdate();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...