角项目中的开玩笑和茉莉花

时间:2019-04-24 13:22:02

标签: angular typescript jasmine jestjs

在一个有角项目中,我已经用玩笑有效地替代了业力/茉莉,并且测试运行得很好。...但是:

我没有删除茉莉花(量角器需要它),现在我遇到了一个问题,如果我在规格文件中使用void Main() { string rawWatermarkFormat = "{@Charge}; {Current Date} {Current Time}; Scan Operator: {Scan Operator's User ID}; Page: x/y"; Dictionary<string, string> keywordValues = new Dictionary<string, string> { ["@Charge"] = "phosphoric acid", ["Current Date"] = "24.04.2019", ["Current Time"] = "14:20", ["Scan Operator's User ID"] = "123", }; Regex.Replace(rawWatermarkFormat, @"{(?<keyword>[^}]+)}", me => { if (keywordValues.TryGetValue(me.Groups["keyword"].Value, out string value)) return value; return me.Value; }).Dump(); } 而不是phosphoric acid; 24.04.2019 14:20; Scan Operator: 123; Page: x/y ,它将使用茉莉花间谍和不是开玩笑的(实现方式不同)。这是一个很棒的开发人员经验,我只想从单元测试中完全删除茉莉花,但是我不知道如何。

如何在编译规范文件时设置tsconfig.spec.json以排除茉莉花?

我正在使用spyOn的{​​{1}}。

如果我没有提供足够的信息,请随时与我联系以获取更多信息!

这是我的jest.spyOn文件:

jest-preset-angular

这是我的ts-jest文件:

tsconfig.spec.json

我的玩笑配置告诉{ "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/spec", "module": "commonjs", "target": "es5", "baseUrl": "" }, "files": [ "test.ts", "polyfills.ts" ], "include": [ "**/*.spec.ts", "**/*.d.ts" ] } 这样使用我的tsconfig.json文件:

{
  "compileOnSave": false,
  "compilerOptions": {
    "importHelpers": true,
    "outDir": "./dist/out-tsc",
    "baseUrl": "public",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types" <-- jasmine types are in here too!
    ],
    "lib": [
      "es2016",
      "dom"
    ],
    "module": "es2015"
  }
}

1 个答案:

答案 0 :(得分:1)

Jest基于Jasmineincludes a "light" version ...

...如此spyOn exists in the Jest source code


它已被弃用且未记录,但正如您所发现的,它仍然可以调用它。

它可能会在Jest的未来版本中被完全删除(旧的Jasmine件将逐渐删除)。


要帮助跟踪对spyOn的呼叫,可以使用errorOnDeprecated CLI选项。

像这样启动Jest

jest --errorOnDeprecated

...,您将在测试中调用spyOn的任何时间看到错误记录。