簡體   English   中英

嘲笑測試函數,調用eval

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM