如何使用jest测试void javascript函数?

时间:2017-04-21 06:23:42

标签: javascript jestjs

如何使用jest框架测试void javascript函数(一个不返回任何东西的函数)?你能提供一个相同的例子吗?

/**
 * this function is used to toggle the input type password field
 * @param element {DOMElement} - field to be toggled
 */
export const togglePassword = (element) => {
    const type = element.getAttribute('type');
    if (type === 'text') {
        element.setAttribute('type', 'password');
    } else {
        element.setAttribute('type', 'text');
    }
}

我们如何测试这类功能?

1 个答案:

答案 0 :(得分:4)

测试void函数的最佳方法是模拟其依赖项的行为。

// module being tested
import sideEffect from 'some-module';

export default function () {
    sideEffect();
}

使用文件模拟和函数期望,您可以断言该函数按预期调用另一个模块:

import hasSideEffect from './hasSideEffect';
import sideEffect from 'some-module';

jest.mock('some-module');

test('calls sideEffect', () => {
    hasSideEffect();

    expect(sideEffect).toHaveBeenCalledTimes(1);
    expect(sideEffect).toHaveBeenCalledWith();
});