在我的代码中,我通过window.confirm
提示框上的“OK”按钮点击来触发回调函数,并且我想测试该回调是否被触发。
在sinon
中,我可以通过以下方式存根化window.confirm
函数:
const confirmStub = sinon.stub(window, 'confirm');
confirmStub.returns(true);
有没有办法在Jest中实现这种桩模式?
在我的代码中,我通过window.confirm
提示框上的“OK”按钮点击来触发回调函数,并且我想测试该回调是否被触发。
在sinon
中,我可以通过以下方式存根化window.confirm
函数:
const confirmStub = sinon.stub(window, 'confirm');
confirmStub.returns(true);
有没有办法在Jest中实现这种桩模式?
你可以使用 global
来轻松地覆盖它们。
global.confirm = () => true
每个测试文件都在自己的进程中运行,这样你就不需要重置设置。
我刚使用了Jest模拟,它对我有效:
it("should call my function", () => {
// use mockImplementation if you want to return a value
window.confirm = jest.fn().mockImplementation(() => true)
fireEvent.click(getByText("Supprimer"))
expect(window.confirm).toHaveBeenCalled()
}
jest.spyOn(global, 'confirm' as any).mockReturnValueOnce(true);
global.innerWidth
时,它会跨越测试持续存在。 - jessepinho