使用Webpack,Jasmine(-core),打字稿进行单元测试

del*_*elp 5 unit-testing jasmine typescript webpack

我有一个项目,使用webpack将所有代码捆绑到一个文件中.该项目正在使用Typescript,目前工作正常.

我已经去添加单元测试,茉莉花似乎是前进的方式之一(多种方式之一).它实际上是包含在package.json中的jasmine-core - 不确定它有多大区别.

所以运行一个非常简单的测试,如

it('true is true', function(){ expect(true).toEqual(true); });
Run Code Online (Sandbox Code Playgroud)

工作良好.但是当我添加需要使用导入的测试时 - 例如

import MyService = require('./MyServices');
Run Code Online (Sandbox Code Playgroud)

然后,当我运行测试时,它抱怨,因为它不知道"需要"是什么. Uncaught ReferenceError: require is not defined

现在我猜这是因为我需要以与打包主项目类似的方式打包测试模块.

那么最好的方法是什么?我应该在webpack.config.js文件中有多个入口点 - 每个*.spec.ts文件一个?或者有没有办法说接受未知数量的spec文件

entry:[*.spec.ts]并为每个输出一个js文件 - *.spec.js

Fra*_*sou 3

您可以使用karma / karma-webpack使用 webpack 运行所有测试来解决导入问题。您可以查看此存储库进行简单配置。

如果您不想为spec.tswebpack 配置文件中的每个规范文件创建一个入口点,您还可以指定一个 index.spec.ts 作为入口点,并让该文件需要所有规范文件。

  • 当您使用 jasmine 时,您可以将行 `frameworks: ['mocha', 'chai', 'sinon'],` 替换为 `frameworks: ['jasmine'],` 您也可以使用 mocha 报告器而不是进度记者。 (2认同)