【发布时间】:2017-11-15 11:33:46
【问题描述】:
我在一个名为 button-actions 的模块中有一个函数,当用户单击后退按钮时会调用该函数。我想直接测试 backButtonActions 方法,但需要模拟被调用的 backButtonActions 中的 leaveApp 和 displayById 方法。
这是我的 button-actions.js 文件方法。
export function backButtonActions( label, page ){ //, page
console.log("LABEL = ", label, " page = ", page);
switch( label ){
case 'step1':
page.leaveApp();
break;
case 'step2':
page.displayById();
break;
}
}
我是测试新手,所以我可能会遗漏一些非常简单的东西。 下面是我的 test.js 文件
window.$ = require('jquery');
import {backButtonActions} from '../button-actions';
describe('Button Actions', () => {
const page = {}
beforeEach(() => {
page.leaveApp = jest.fn(() => "leave");
page.displayById = jest.fn(() => "Display");
document.body.innerHTML =
'<div>' +
' <button class="btn-back" />' +
'</div>';
$('.btn-back').click((event, label) =>{
backButtonActions( label, page );
});
});
it('backButtonActions requires a string of either "step1" or "step2"', () => {
$('.btn-back').trigger('click', 'step1');
expect(backButtonActions).toBeCalled();
expect(backButtonActions).toBeCalledWith("step1" || "step2");
});
})
当我运行上述测试时,我收到以下错误。
● 按钮操作 › backButtonActions 需要一个字符串 “第 1 步”或“第 2 步”
expect(jest.fn())[.not].toBeCalled() jest.fn() value must be a mock function or spy. Received: function: [Function backButtonActions] at Object.<anonymous> (test/js/spec/create/button-actions.test.js:64:50)
我应该运行其他什么来让它工作吗?
【问题讨论】: