javascript - karma 不会在 javascript 测试中运行我的 typescript 测试

标签 javascript angularjs typescript karma-runner browserify

我们有一个相当大/长期发展的 Angular 项目。它目前运行 angular 1.2(我们正在升级到 angular 1.5 并开始准备 angular2 迁移)。

为了能够开始 angular2 迁移,我们希望将 typescript 集成到项目中。源文件的集成非常容易。我们使用 browserify;我们刚刚添加了 tsify 和一些配置,几分钟内一切正常(js+ts 代码/模块捆绑在一起)。

对于我们的前端单元测试( karma 、 Jasmine ),情况恰恰相反(现在已经为此工作了几个小时)。

这是我们的 karma 配置: https://gist.github.com/ds82/2eaeae875eef92481bc699ead8a7ac5c

如果我使用此配置运行我们的测试套件, typescript 规范文件将被完全忽略。这些 typescript 文件中的测试和代码都没有执行(在 spec.ts 文件的顶部有 console.log)。 Browserify 记录它包含 typescript 文件,但如果我打开 karma 调试浏览器 View 并尝试打开 spec.ts 文件的源代码,Chromes 只会显示一个空文件。当我这样做时,它会记录:

28 06 2016 16:25:35.242:WARN [网络服务器]: 404:/absolute/var/folders/0p/b7pdm54d26q8db2qsxtxb3z80000gn/T/app/scripts/blobb.spec.ts

现在,如果我注释掉 karma 配置的第 49 行和第 50 行(这导致加载规范。ts文件没有 spec.js 文件), typescript 测试按预期运行。同时,我可以在karma调试浏览器 View 中查看spec.ts文件。

总结一下:如果我运行所有测试(javascript + typescript),则只会执行 javascript 文件/测试。如果我禁用/注释掉所有 javascript 测试,我的 typescript 测试运行良好。

有人知道我怎么能找到这个问题的原因吗?

最佳答案

在这里找到了解决方法:https://github.com/angular/angular-cli/issues/2125#issuecomment-247395088

I figured out a work around. In the karma.conf.js file, add:

mime: {
  'text/x-typescript': ['ts','tsx']
},

This tells the Karma server to serve the .ts files with a text/x-typescript mime type. That seems to make it work.

我遇到了同样的问题,发现 Chrome 在控制台中出现了关于我的 Typescript 文件的无效 MIME 类型的错误。该文件仍具有 .ts 扩展名,因此它被解释为视频文件。解决方法告诉 Karma 使用正确的 MIME 类型来提供服务。

似乎使用 karma-typescript 可以通过使用 .js 提供文件来避免这个问题,但我想保留我们用于常规源文件的相同 browserify/tsify 设置。

关于javascript - karma 不会在 javascript 测试中运行我的 typescript 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38079122/

相关文章:

javascript - 如何在 php 的 javascript 输出中设置 html 元素的样式

javascript - 如何在打印时对齐文本

javascript - 如何使用 AngularJS ng-click/ng-repeat 取消选择未选择的项目?

javascript - 我只想在 AngularJS 满足条件时添加 JSON 信息

javascript - Jest : . toThrow 匹配器未通过错误测试

javascript - 如何使用 javascript 或 jquery 获取表格特定行中​​存在的复选框和文本框值

javascript - Angular 延迟解析未​​定义

javascript - 如何在 Typescript 中对循环对象进行字符串化?

node.js - 带有快速路由错误的 typescript /Node API

javascript - fs.readFile() 或 fs.readFileSync() 不是函数异常,但为什么呢?