Chutzpah - 使用 jasmine 和 TypeScript 进行 AngularJS 测试

Posted

技术标签:

【中文标题】Chutzpah - 使用 jasmine 和 TypeScript 进行 AngularJS 测试【英文标题】:Chutzpah - AngularJS testing with jasmine and TypeScript 【发布时间】:2016-05-28 00:26:29 【问题描述】:

我在 Visual Studio 2015 Update 1 的 TypeScript 中使用 Angular 1.4.9 和 Jasmine 2.2.0 和 Chutzpah 4.2.0 以及我的 Angular 代码和单元测试。

我的问题与之前发布的 TypeScript - jasmine - Chutzpah - AngularJS 相同。我试图在那里实现接受的答案(将/// <chutzpah_reference />添加到角度、角度模拟和角度ui的测试打字稿文件中),但是我仍然收到错误:

找不到变量:文件 X 中的角度

在删除上述 chutzpah 引用后,我还尝试将 js 文件添加到 chutzpah.json 文件中(见下文)

在此之后,我从 Visual Studio Options-> Chutzpah -> Enable Chutzpah Tracing 启用了 Chutzpah 日志记录,重新运行测试,并确认 JS 文件确实被拾取。我还可以使用 Chutzpah 在 typescript 中运行其他没有角度依赖的测试。

有什么想法吗?


  "Framework": "jasmine",
  "Compile": 
    "Mode": "External",
    "Extensions": [ ".ts" ],
    "ExtensionsWithNoOutput": [ ".d.ts" ]
  ,
  "References": [
    
      "Includes": [ "*/../project/app/*.ts", "../project/scripts/*.js" ],
      "Excludes": [ "*/../project/app/*.d.ts" ]
    
  ],
  "Tests": [
    
      "Includes": [ "*/AppTests/*.ts" ],
      "Excludes": [ "*/AppTests/*.d.ts" ]
    
  ]

项目目录结构相当标准:SLN 文件有 2 个项目,一个用于 Web 应用程序,另一个用于 Web 应用程序测试。

【问题讨论】:

【参考方案1】:

见https://github.com/mmanela/chutzpah/wiki/Breaking-change-to-nested-reference-comments-in-version-4.1:

Chutzpah 4.1 更改了何时扫描您的文件以查找 /// <reference cmets。最初,Chutzpah 没有 chutzpah.json 设置文件,只能通过破解打开文件并解析参考 cmets 来查找参考。但是,由于添加了 chutzpah.json 文件,因此推荐的声明引用的方法是使用引用部分而不是文件 cmets。问题是即使您使用 chutzpah.json 它仍然会打开您的文件并为 cmets 解析它们(这会降低性能成本)。为了解决这个问题,4.1 版改变了扩展引用的工作方式。

    如果您不使用 chutzpah.json 文件来指定您的测试(不推荐),则不会发生任何变化。您的参考 cmets 仍在解析中。

    如果您指定了一个测试设置并且还想扩展嵌套引用,则必须将 ExpandReferenceComments 设置设置为 true。例如:

    “测试”:[ “路径”:“测试”,“包含”:[“.Spec.”],“ExpandReferenceComments”:“真” ]

【讨论】:

嗨@Matthew,谢谢。在发布问题并进行适当修改后,我找到了此链接。但是,拾取依赖的角度文件似乎仍然存在问题。我想出了一个 min-Repo 解决方案来演示这个问题。 Github 有什么好发的地方吗? 我已经在 GitHub 上提出了github.com/mmanela/chutzpah/issues/478,并附上了我看到的问题的回购。

以上是关于Chutzpah - 使用 jasmine 和 TypeScript 进行 AngularJS 测试的主要内容,如果未能解决你的问题,请参考以下文章

输入 [type="file"] 的 Angular 和 Jasmine 单元测试更改事件

使用 Jasmine 和 TypeScript 进行单元测试

如何安装和使用Karma-Jasmine

安装和使用Karma-Jasmine进行自动化测试

使用 Jasmine 和 Rails 3.1 测试 Coffeescript

如何使用 Angular 和 Jasmine 模拟 socket.io