调用eval的Jest测试函数

问题描述 投票:1回答:2

我有一个使用vue-cli 3.0创建的Vue TS项目。

这是我将测试的功能:

public hopJavascript(url: string) {
    eval(url);
}

这是我使用Jest框架的测试函数:

test('navigation using javascript', () => {
    const url = "someurl";
    hopJavascript(url);
    
    expect(eval).toBeCalled();
});

现在我收到这条消息,test failed console logging告诉我,我需要一个模拟版本的eval。

我怎么能模拟评估?

javascript vue.js jestjs
2个回答
0
投票

更新

看来你不能总是根据你的JS环境(浏览器或节点)覆盖eval。有关更多信息,请参阅"How override eval function in javascript?"的答案

原始答案

我想你可以在测试文件中重新定义eval

global.eval = jest.fn()

0
投票

您需要使用spyOn()跟踪您的函数。

此解决方案应该适合您。

import MyClass from '../MyClass';

test('navigation using javascript', () => {
    const url = "someurl";
    const spy = jest.spyOn(MyClass, 'eval');

    MyClass.hopJavascript(url);

    expect(spy).toHaveBeenCalled();
});
© www.soinside.com 2019 - 2024. All rights reserved.