我们有一个相当大/长期发展的 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/