根据环境禁用Jasmine的fdescribe()和fit()

Guy*_*Guy 19 javascript node.js jasmine codeship

fdescribe()fit()当您处理一部分测试时,它们非常适合降低噪音.我有时会忘记将它们更改为describe()/ it()在将我的分支合并到主服务器之前/ 之前.(在处理代码时将它们放在单独的分支中是可以的 - 即预先提交检查对我不起作用.)

我的CI环境是Codeship.如果遇到任何有针对性的方法,是否有解决这个问题的解决方案会使Codeship中的测试失败?

使用像无焦点测试这样的东西是可以的.知道如何在Codeship中启用此规则作为错误并在本地禁用它吗?

Dom*_*erg 6

编辑 14.11.19

为了让事情更容易,我创建了一个可安装的包,你可以在https://www.npmjs.com/package/tslint-jasmine找到

原帖

如果您正在使用 TSLint 并且(像我一样)发现所有散焦和 tslint-jasmine-noSkipOrFocus 检查器都不适合您,我为此创建了一个要点:https ://gist.github.com/djungowski/7d9126bb79970446b4ffeb5656c6bf1f

如何使用:

  1. 将 Gist 保存在名为的文件夹TSLint/RulesnoJasmineFocusRule.js
  2. 将 Rules 文件夹添加到您的 TSLint 配置中: rulesDirectory: 'TSLint/Rules'
  3. 启用选项 "no-jasmine-focus": true


Ala*_*lan 4

使用诸如非集中测试之类的东西就可以了。知道如何在 Codeship 中启用此规则作为错误并在本地禁用它吗?

您可以结合使用环境变量并重新定义 fdescribe/fit 全局函数:

  1. npm i --save cross-env

  2. 包.json:

    "scripts": {
      "test": "jasmine",
      "test-safe": "cross-env FOCUSED_TESTS=off jasmine"
    },
    
    Run Code Online (Sandbox Code Playgroud)
  3. disableFocusedTestsIfNecessary.js(包含在jasmine 定义其全局变量之后):

    if (process.env.FOCUSED_TESTS === "off") {
      console.log("Focused tests must be off");
      global.fdescribe = global.fit = function() {
        throw new Error("fdescribe and fit are disabled in this environment");
      };
    }
    else {
      console.log("Focused tests enabled");
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 告诉 codeship 运行npm run test-safe而不是npm run test