gpt4 book ai didi

javascript - Jest TouchEvent TypeError : $ is not a function

转载 作者:行者123 更新时间:2023-12-04 11:59:50 28 4
gpt4 key购买 nike

我正在为一个函数写一个测试 MyFuntion并调用另一个函数sendTouchEvent实例化一个TouchEvent。

function sendTouchEvent(element, eventType) {  
const touch = new Touch({
...
});

const touchEvent = new TouchEvent(eventType, {
...
});

element.dispatchEvent(touchEvent);
}
我的测试是这样的:
const { test, expect } = require("@jest/globals");
const fs = require('fs');
const chrome = require("sinon-chrome");
const { JSDOM } = require("jsdom");
const dom = new JSDOM()
global.document = dom.window.document
global.window = dom.window
global.chrome = chrome
global.MutationObserver = class {
constructor(callback) {}
disconnect() {}
observe(element, initObject) {}
};

jest.dontMock('jquery');
$ = jQuery = require("jquery");
global.$ = $
global.jQuery = jQuery

const content = require("../content");
const data = require("./fixtures/data.json");

test("get data", () => {
const mod = rewire("../content")
mod.__set__('data', data) // mocking json data
var el = document.createElement("div")
el.innerHTML = html_str; // loaded before with fs.readFileSync

expect(content.MyFunction(el)).toBe({})
})
我的 jest.setup.js 文件是这样的:
$ = require("jquery");
global.$ = $;
global.window.$ = $;
我收到了这个错误:
    TypeError: $ is not a function

207 | });
208 |
> 209 | const touchEvent = new TouchEvent(eventType, {
| ^
210 | cancelable: true,
211 | bubbles: true,
212 | touches: [touch],

at extension/content.js:209:48
at Object.<anonymous> (extension/content.js:411:4)
at Object.load (node_modules/rewire/lib/moduleEnv.js:55:18)
at internalRewire (node_modules/rewire/lib/rewire.js:49:15)
at rewire (node_modules/rewire/lib/index.js:11:12)
at Object.<anonymous> (extension/tests/content.test.js:26:17)
我试图模拟 sendTouchEvent功能已经,但它不起作用。还尝试注入(inject) $使用重新布线 mod.__set__ .
有谁知道如何解决这一问题?

最佳答案

我发现问题出在 rewire库。出于某种原因,它弄乱了窗口的事件。我删除它并更改我的代码以便能够模拟 data不带 rewire 的变量

关于javascript - Jest TouchEvent TypeError : $ is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68785500/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com