我有一个使用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。
我怎么能模拟评估?
更新
看来你不能总是根据你的JS环境(浏览器或节点)覆盖eval。有关更多信息,请参阅"How override eval function in javascript?"的答案
原始答案
我想你可以在测试文件中重新定义eval
:
global.eval = jest.fn()
您需要使用spyOn()跟踪您的函数。
此解决方案应该适合您。
import MyClass from '../MyClass';
test('navigation using javascript', () => {
const url = "someurl";
const spy = jest.spyOn(MyClass, 'eval');
MyClass.hopJavascript(url);
expect(spy).toHaveBeenCalled();
});