[英]Jest testing function that calls eval
我有一個使用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(); });
現在,我收到此消息, 測試失敗的控制台日志記錄 ,告訴我我需要模擬版本的eval。
我該如何模擬評估 ?
更新資料
似乎您不能總是基於您的JS環境(瀏覽器或節點)覆蓋eval。 請參閱“如何在javascript中覆蓋eval函數?”的答案。 欲獲得更多信息
原始答案
我認為您可以在測試文件中重新定義 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();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.