如何使用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');
}
}
我们如何测试这类功能?
答案 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();
});