当前位置: 首页 > 知识库问答 >
问题:

如何使用ESLint与笑话

薛英卫
2023-03-14

我试图使用ESLint linter与Jest测试框架。

Jest测试使用一些全局变量运行,比如Jest,我需要告诉linter关于它的信息;但棘手的是目录结构,Jest将测试与源代码一起嵌入\uuuuuuuuuuuuuuuuu文件夹中,因此目录结构类似于:

src
    foo
        foo.js
        __tests__
            fooTest.js
    bar
        bar.js
        __tests__
            barTest.js

通常,我会将所有测试放在一个目录下,我可以在那里添加一个.eslintrc文件来添加全局变量。。。但是我当然不想在每一个\uuu test\uu目录中添加.eslintrc文件。

目前,我刚刚将测试全局变量添加到了global.eslintrc文件中,但由于这意味着我现在可以在非测试代码中引用jest,所以这似乎不是“正确”的解决方案

有没有办法让eslint根据基于目录名的模式或类似的模式应用规则?

共有3个答案

端木权
2023-03-14

您还可以在测试文件中设置测试环境,如下所示:

/* eslint-env jest */

describe(() => {
  /* ... */
})
裴英锐
2023-03-14

ESLint支持这个版本

/*
.eslintrc.js
*/
const ERROR = 2;
const WARN = 1;

module.exports = {
  extends: "eslint:recommended",
  env: {
    es6: true
  },
  overrides: [
    {
      files: [
        "**/*.test.js"
      ],
      env: {
        jest: true // now **/*.test.js files' env has both es6 *and* jest
      },
      // Can't extend in overrides: https://github.com/eslint/eslint/issues/8813
      // "extends": ["plugin:jest/recommended"]
      plugins: ["jest"],
      rules: {
        "jest/no-disabled-tests": "warn",
        "jest/no-focused-tests": "error",
        "jest/no-identical-title": "error",
        "jest/prefer-to-have-length": "warn",
        "jest/valid-expect": "error"
      }
    }
  ],
};

以下是eslint config的“扩展覆盖”限制的一个解决方法(从这里的另一个答案开始,投票表决!):

overrides: [
  Object.assign(
    {
      files: [ '**/*.test.js' ],
      env: { jest: true },
      plugins: [ 'jest' ],
    },
    require('eslint-plugin-jest').configs.recommended
  )
]

从…起https://github.com/eslint/eslint/issues/8813#issuecomment-320448724

柳轶
2023-03-14

文档显示您现在可以添加:

"env": {
    "jest/globals": true
}

添加到您的.eslintrc,它将向您的环境添加所有与笑话相关的内容,从而消除linter错误/警告。

您可能需要包含插件:["jest"]到您的esconfig,并添加eslint-plugin-jest插件,如果它仍然不工作。

 类似资料:
  • 问题内容: 我正在尝试测试是否调用componentWillMount,为此我的测试是 但是,即使调用componentWillMount方法,测试也不会通过。我在这里想念什么? 问题答案: 我不知道其他答案是否对您的问题有所帮助,但是您不需要测试componentWillMount。React应该已经为您完成了该测试。 与您的测试更相关的是测试您要在组件中使用该方法的功能或动作。 如果要进行一些

  • 问题内容: 我在带有打字稿的React Router v5.1.2中使用UseHistory挂钩吗?运行单元测试时,我遇到了问题。 TypeError:无法读取未定义的属性“ history”。 我也尝试使用,但仍然无法正常工作。 问题答案: 浅化使用的反应功能组件时,我需要相同的内容。 在我的测试文件中解决了以下模拟问题:

  • 我提到了这个答案,我该如何模拟java。时间本地日期。now()关于如何模拟我的LocalDateTime。now()调用。我基本上遵循了所有步骤,但只使用了LocalDateTime而不是LocalDate。 我的代码的功能是这样的,它应该只在一小时的第15或45分钟运行。因此,我将LOCAL\u DATE\u TIME静态变量设置为: 然后在我的@Before测试方法中,我有以下内容: 这是2

  • 本节将介绍怎样在一个 TypeScript 项目中使用 ESLint 规范,至于为什么不推荐使用 TSLint,可以看下这篇文章:TypeScript 官方已经决定全面采用 ESLint,ESLint 的 TypeScript 解析器也成为独立项目,专注解决双方兼容性问题。 所以,同开发前端项目一样,熟练掌握 ESLint 规则,也成了 TypeScript 项目开发的必要条件。 1. 慕课解释

  • 我想通过Grails 3后端从MySQL数据库中的iOS应用程序中保存微笑。到目前为止,我设法改变我的MySQL排序等utf8mb4,但我没有找到正确的方式如何连接我的后端到MySQL通过utf8mb4字符集。 我的连接url是: 将字符编码或字符集更改为utf8mb4会导致错误:不支持的字符编码'utf8mb4'。 我在build.gradle中的grails连接器是运行时'mysql: mys

  • 我尝试在vuex的操作中使用vue路由器,这在本地主机上运行良好。 然而,当我试图通过从存储文件导入操作来准备存储(模拟)时,我得到了错误。 你能帮我解决这个问题吗? 版本 错误msg app/src/main。js app/src/store/main。js 应用程序/src/路由器/main.js 应用程序/测试/组件/主。测验js 组件