【问题标题】:How to run Jasmine tests in watch mode for TypeScript如何在 TypeScript 的监视模式下运行 Jasmine 测试
【发布时间】:2018-07-12 03:03:50
【问题描述】:

我有一个使用 TypeScript 的 Node.js 应用程序,现在我希望 Jasmine 在我每次更改 .ts 文件时自动运行测试。所以我只是想找到一个合适的命令,在命令行中以npm test 的身份运行,或者找到一个可以观察我的 .ts 文件的包在更改时编译它们并运行 jasmine。有人知道解决办法吗?

【问题讨论】:

  • 您当前的test 命令是什么? IE,在您的package.json 中,scripts 块中的test 是什么?

标签: javascript node.js typescript jasmine


【解决方案1】:

我找到的最简单的方法是

安装依赖: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 上发布了一个修改后的工作示例

【讨论】:

  • 实际上在 Windows 上遇到了问题(找不到 jasmine-ts)。必须将其拆分为测试和测试手表: "test": "jasmine-ts \"src/**/jasmine-test.spec.ts\"", "test-watch": "nodemon --ext ts --exec \"npm test \""
【解决方案2】:

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

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

tsc --watch

第二个启动监视 .js 文件并在更改时重新启动的 nodemon。每次执行 jasmine 测试运行器:

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 之后)一起使用。

【讨论】:

    【解决方案3】:

    您可以考虑使用jasmine-node。我不认为茉莉花本身有观看选项。

    npm i -g jasmine-node
    

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

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

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

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

    【讨论】:

    • 在这种情况下,我似乎仍然需要一种预处理器来在运行测试之前预编译 .ts 文件。这个包有没有这样的选项?我可以让 nodemon 监视我的文件并在更改时运行 jasmine,所以这不是问题。我什至可以让它先运行 tsc 以将所有 .ts 编译为 .js 然后运行 ​​jasmine ,但这与在监视模式下编译 .ts 不同,因为它会编译项目目录中的所有文件,这需要相当长的时间。我正在寻找一种运行测试的快速无缝方式来改进我的工作流程。
    • 啊,你的 测试 在 TypeScript 中。我没明白。那么我的回答对你没有帮助。也许您应该改为查看 Jest?类似茉莉花的语法,很好听,还有TS版:github.com/kulshekhar/ts-jest
    • 谢谢,我会注意的。
    猜你喜欢
    • 2021-01-01
    • 2020-07-02
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多