调用eval的Jest测试函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用eval的Jest测试函数相关的知识,希望对你有一定的参考价值。
我有一个使用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();
});
以上是关于调用eval的Jest测试函数的主要内容,如果未能解决你的问题,请参考以下文章
当模拟点击调用调用 promise 的函数时,使用 React 的 Jest 和 Enzyme 进行测试