首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >测试NextJS和Jest ReferenceError: TextEncoder未定义

测试NextJS和Jest ReferenceError: TextEncoder未定义
EN

Stack Overflow用户
提问于 2022-09-29 20:02:39
回答 1查看 217关注 0票数 0

当我试图学习如何测试next.js应用程序时,我得到了这个错误消息,我尝试过从配置顶部的utils导入文本编码器,但是没有成功。

代码语言:javascript
运行
复制
  ReferenceError: TextEncoder is not defined



  at Object.<anonymous> (node_modules/whatwg-url/lib/encoding.js:2:21)
  at Object.<anonymous> (node_modules/whatwg-url/lib/url-state-machine.js:5:34)
  at Object.<anonymous> (node_modules/whatwg-url/lib/URL-impl.js:2:13)
  at Object.<anonymous> (node_modules/whatwg-url/lib/URL.js:442:14)
  at Object.<anonymous> (node_modules/whatwg-url/webidl2js-wrapper.js:3:13)
  at Object.<anonymous> (node_modules/whatwg-url/index.js:3:34)
  at Object.<anonymous> (node_modules/mongodb-connection-string-url/src/index.ts:1:1)
  at Object.<anonymous> (node_modules/mongodb/src/connection_string.ts:3:1)
  at Object.<anonymous> (node_modules/mongodb/src/mongo_client.ts:11:1)
  at Object.<anonymous> (node_modules/mongodb/src/change_stream.ts:17:1)
  at Object.<anonymous> (node_modules/mongodb/src/index.ts:3:1)
  at Object.<anonymous> (node_modules/mongoose/lib/drivers/node-mongodb-native/binary.js:8:16)
  at Object.<anonymous> (node_modules/mongoose/lib/drivers/node-mongodb-native/index.js:7:18)
  at Object.<anonymous> (node_modules/mongoose/lib/index.js:7:25)
  at Object.<anonymous> (node_modules/mongoose/index.js:8:18)
  at Object.<anonymous> (library/mongoDB.js:15:56)
  at Object.<anonymous> (library/players.js:15:18)
  at Object.<anonymous> (pages/index.js:18:18)
  at Object.<anonymous> (tests/index.test.js:6:53)

Jest Config文件

代码语言:javascript
运行
复制
const nextJest = require('next/jest')
    const createJestConfig = nextJest({
  dir: './',
})
const customJestConfig = {
  moduleDirectories: ['node_modules', '<rootDir>/'],
  testEnvironment: 'jest-environment-jsdom',
}
module.exports = createJestConfig(customJestConfig)

Package.json

代码语言:javascript
运行
复制
"devDependencies": {
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^13.4.0",
    "eslint": "8.23.1",
    "eslint-config-next": "12.3.0",
    "jest": "^29.1.1",
    "jest-environment-jsdom": "^29.1.1"
  }

index.test.js

代码语言:javascript
运行
复制
import Home from '../pages/index'
import '@testing-library/jest-dom'
import { fireEvent, render, screen } from '@testing-library/react'

describe('Home Page', () => {
  it('renders home component',
    () => {
      render(<Home />)
      expect(screen.getByTestId('home-page')).toBeInTheDocument()
    })
})
EN

回答 1

Stack Overflow用户

发布于 2022-09-29 21:35:16

我会通过在一个专用文件上模拟TextEncoder来做到这一点,这个文件将作为一个安装文件放在jest上。

这样,我认为你应该消除那个错误。

代码语言:javascript
运行
复制
// text-encoder.mock.ts
import { TextEncoder } from 'util';

global.TextEncoder = TextEncoder;


// jest.config.ts
const nextJest = require('next/jest');
const createJestConfig = nextJest({
  dir: './',
});
const customJestConfig = {
  moduleDirectories: ['node_modules', '<rootDir>/'],
  testEnvironment: 'jest-environment-jsdom',
  setupFiles: [
    '<rootDir>/path/to/text-encoder.mock.ts',
  ],
};

module.exports = createJestConfig(customJestConfig)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73901037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档