node.js - 用 eslint 开玩笑地模拟对象
问题描述
假设我有以下代码
export function myFunction(user) {
return transform(user);
)
我创建了一个__tests__
文件夹,并在其中创建了一个__mocks__
带有user.mock.ts的文件夹
其中有
export const user = { id: 1, name: "John" }
现在在我的__test__
文件夹中,我有 user.spec.ts
import { user } from './__mocks__/user.mock';
describe('user', () => {
it('should map user correctly', () => {
const expected = { id: 1, name: "John" }
const result = myFunction(user);
expect(result).toEqual(expected);
});
});
我有以下 eslintrc
{
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint",
"eslint-plugin-jest"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier/@typescript-eslint",
"prettier",
"plugin:jest/recommended"
],
"rules": {
}
}
我收到以下错误
不应从mocks目录手动导入 Mocks。而是使用
jest.mock
并从原始模块 path.eslintjest/no-mocks-import 导入
解决方案
使用名为的特殊命名目录的机制__mocks__
是一种能够自动检测包模拟的方式(而不是放置您计划显式运行的代码的地方)。
作为测试的一部分,您永远不会在代码中显式导入此文件夹中的文件。
因此,如果您只是为您的案例使用普通的文件夹名称,并且不与开玩笑的约定交叉连接,那么您应该能够消除错误。
相比之下,如果您想实际模拟现有包(例如替换fetch
为您自己的版本fetch
),请参阅https://jestjs.io/docs/manual-mocks#mocking-node-modules了解如何构建文件,例如名为__mocks__/fetch.ts
将 fetch 的真正实现替换为伪造其行为的实现。这是唯一应该使用特别命名的目录的东西。
推荐阅读
- python - How to Change x-axis to logarithmic in PLOTLY histogram
- c# - 如何在 .NetCore 中使用 GetWebRequest 方法
- azure-blob-storage - Cannot use azcopy from one blob to another with SAS
- pyspark - 将 jupyter sparkmagic 内核连接到 kerberized livy 服务器的问题
- python-3.x - 此代码未给出新排序列表的值。有人可以告诉我这段代码中的错误吗?
- python - Find N largest elements in a list with a minimum distance
- python - 如何使用 pandas 合并绘图表上的标题?
- hyperledger-fabric - 如何解决此错误 Blockchain_chaincode
- c# - 是否可以在父目录中构建文件?
- javascript - 使用nestjs将hbs渲染保存到变量中