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