【问题标题】:karma does not run my typescript tests along javascript tests业力不会沿着 javascript 测试运行我的打字稿测试
【发布时间】:2016-06-28 14:34:08
【问题描述】:

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

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

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

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

如果我使用这个配置运行我们的测试套件,打字稿规范文件将被完全忽略。这些打字稿文件中的测试和代码都被执行(在 spec.ts 文件的顶部有 console.log)。 Browserify 记录它包含打字稿文件,但如果我打开业力调试浏览器视图并尝试打开 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 行(这会导致 only 加载规范。ts 文件是 no em> spec.js 文件),打字稿测试按预期运行。同时,我可以在 karma 调试浏览器视图中查看 spec.ts 文件。

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

有没有人知道我该如何找到造成这种情况的原因?

【问题讨论】:

  • 您在浏览器控制台中是否遇到任何其他错误?如果您转到浏览器(不是 Phantom)并单击“调试”,您可能会获得更多信息
  • 不确定它是否会有所帮助,但this blog post 描述了使用 karma 和 jasmine(在 Ionic2 项目中)测试 Angular2 应用程序的成功配置。也许它会给你一些关于调整什么的想法。
  • @MattLishman:不,我没有收到任何错误..
  • @morphatic:问题是测试套件运行良好,如果我禁用 .js 测试..

标签: javascript angularjs typescript karma-runner browserify


【解决方案1】:

在这里找到了解决方法: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 设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 2014-12-23
    • 1970-01-01
    相关资源
    最近更新 更多