业力不会在javascript测试中运行我的打字稿测试

时间:2016-06-28 14:34:09

标签: javascript angularjs typescript karma-runner browserify

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

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

对于我们的前端单元测试(业力,茉莉),它恰好相反(现在已经工作了好几个小时)。

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

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

28 06 2016 16:25:35.242:WARN [web-server]: 404: /absolute/var/folders/0p/b7pdm54d26q8db2qsxtxb3z80000gn/T/app/scripts/blobb.spec.ts

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

总结:如果我运行所有测试(javascript + typescript),只执行javascript文件/测试。如果我禁用/注释掉所有的javascript测试,我的打字稿测试运行正常。

有人知道如何找到原因吗?

1 个答案:

答案 0 :(得分:0)

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

  

我想出了一个解决方法。在karma.conf.js文件中,添加:

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

这告诉Karma服务器使用text / x-typescript mime类型提供.ts文件。这似乎使它成功。

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

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