如何在TypeScript的监视模式下运行Jasmine测试

时间:2018-02-01 17:37:49

标签: javascript node.js typescript jasmine

我有一个使用TypeScript的Node.js应用程序,现在我希望Jasmine每次在.ts文件中进行更改时自动运行测试。所以我只是试图在命令行中找到一个适当的命令作为npm test运行,或者一个可以监视我的.ts文件的包在变更时编译它们并运行jasmine。有人知道解决方案吗?

3 个答案:

答案 0 :(得分:4)

我找到的最简单方法是

安装依赖项:npm install --save-dev jasmine-ts nodemon

初始化茉莉花:node_modules/.bin/jasmine-ts init

在package.json中:

"scripts": {
    "test": "nodemon --ext ts --exec 'jasmine-ts \"src/**/*.spec.ts\"'"
}

修改:上述解决方案自2019年4月11日起无效。我在https://github.com/erosb/ts-node-jasmine-example

发布了修改后的工作示例

答案 1 :(得分:0)

您可以考虑使用jasmine-node。我不认为茉莉花本身有手表选择。

npm i -g jasmine-node

假设test package.json块中的scripts命令是这样的:

"scripts": {
    ...
    "test": "jasmine some-directory-or-glob-pattern"
    ...
}

使用jasmine-node并将--autotest--watch标志添加到该命令:

"scripts": {
    ...
    "test": "jasmine-node --autotest --watch some-directory-or-glob-pattern"
    ...
}

答案 2 :(得分:0)

这可以通过在单独的终端中启动的两个命令来完成。假设软件包以全局模式安装。

第一个命令在监视模式下启动TypeScript编译器:

tsc --watch

第二个启动nodemon,它监视.js文件并在更改时重新启动。每次执行jasmine test runner:

nodemon --ext js --exec 'jasmine JASMINE_CONFIG_PATH=jasmine.json'

这个解决方案速度很快,但它也有两个终端运行的缺点。所以这不是理想的,但到目前为止我发现的最好。

因此,package.json中的脚本部分如下所示:

"scripts": {
  /* ... */
  "watch": "tsc --watch",
  "test": "nodemon --ext js --exec 'jasmine JASMINE_CONFIG_PATH=jasmine.json'",
  "devstart": "nodemon ./bin/www"
},

devstart每次与watch重启服务器一起工作.ts文件被更改(在编译为.js之后)。