使用Webpack、Jasmine(-core)和Typescript进行单元测试

5

我有一个项目,使用webpack将所有代码打包成一个单独的文件。该项目使用TypeScript,目前运行良好。

我想要添加单元测试,Jasmine似乎是其中一种可行的方式。实际上,在package.json中包含的是jasmine-core - 不确定这是否有多大的区别。

因此,运行一个非常简单的测试,例如:

it('true is true', function(){ expect(true).toEqual(true); });

正常工作。 但是当我添加需要使用导入的测试时 - 例如

import MyService = require('./MyServices');

当我运行测试时,它会抱怨它不知道'require'是什么。 未捕获的ReferenceError:require未定义 现在我猜想这是因为我需要将测试模块打包到类似于打包主项目的方式中。
那么最好的方法是什么呢? 我应该在webpack.config.js文件中有多个入口点 - 每个*.spec.ts文件一个入口点吗? 还是有一种方法可以接受未知数量的spec文件
entry: [*.spec.ts] 并为每个文件输出一个js文件 - * .spec.js
1个回答

3
您可以使用 karma/karma-webpack 运行所有测试,使用 webpack 解析导入。您可以查看此存储库以获取简单的配置。
如果您不想为webpack的配置文件中的每个spec.ts创建一个入口点,还可以指定一个index.spec.ts作为入口点,并使此文件要求所有规范文件。

看起来很理想。现在要尝试一下简单仓库中的示例,希望它真的很简单 :) - delp
2
由于您正在使用Jasmine,因此可以将行frameworks:['mocha','chai','sinon'],替换为frameworks:['jasmine'], 您还可以使用Mocha报告器而不是进度报告器。 - Frank Bessou
我尝试按照参考存储库(thitemple/TypescriptMochaWebpackDemo)中的自述文件操作,但测试对我来说抛出了一堆错误,所以不得不在那里打开一个问题(Issue)。如果有人成功运行它,我会很感兴趣。 - pabrams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接