问题标签 [chutzpah]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
258 浏览

javascript - 如何使用 QUnit / Chutzpah 对条件窗口宽度进行单元测试

在测试中,做一个console.log($(window).width());输出 400,所以 if < 500 被覆盖。不幸的是,并不是所有的 JS 都可以转换为 SASS/CSS。

0 投票
1 回答
1675 浏览

visual-studio - 在 Visual Studio 中使用 Chutzpah testrunner 和 requirejs 时,在单独的项目中进行 JavaScript 单元测试

我希望我的测试与被测代码位于一个单独的项目中,如Jasmine in a separate test project 中所述。但是,在测试文件中包含引用路径的方法不适用于与 requirejs 一起使用测试时。有没有其他方法可以做到这一点?

0 投票
1 回答
636 浏览

javascript - 如何使用 Chutzpah 更改底层 Phantomjs 对象设置?

我们使用 Chutzpah 测试适配器在 Visual Studio 中运行了一些 QUnit javascript 测试。一切正常,直到我们最近更改了我们的 api(由 js 文件测试的那个),并在 UserAgent http 标头上添加了一些验证。当我尝试更新测试以更改/模拟用户代理时,我意识到即使通过覆盖默认浏览器属性也无法直接实现。

经过几天的清理,我终于找到了到底发生了什么。Chutzpah 正在为要运行的测试文件创建一个phantomjs 页面对象。这是在位于Chutzpah 适配器安装路径的基本 javascript 文件 (chutzpahRunner.js) 上完成的。这些是文件的最后几行,有效地启动了测试:

Phatomjs 支持通过在页面设置对象中指定来更改用户代理标头。如果我在我的机器上编辑这个 chutzpahRunner.js 文件,并在那里手动设置用户代理,如下所示:

我的测试又开始工作了。问题是这不在项目本身中,因此无法与团队的其他成员共享。

是否可以更改 Chutzpah 创建的 phantomjs 对象的属性来运行测试?我想从我自己的测试中更改它们,或者从我可以嵌入到管道中的另一个脚本文件中更改它们。

0 投票
1 回答
1789 浏览

visual-studio-2013 - Visual Studio 13 + Chutzpah - 我在哪里可以找到 chutzpah.console.exe?

我们想使用 chutzpah(VS 扩展)通过 MSBuild(在 TFS 构建中)运行我们的 Jasmine 测试。所以我试图在本地计算机上的某个地方找到 chutzpah.console.exe(以便我们可以手动调用它),但我找不到它。有谁知道它通常位于哪里?

0 投票
3 回答
3128 浏览

visual-studio-2013 - TypeScript + Chutzpah + Jasmine - 如何在单元测试中包含依赖项?

我正在使用 Chutzpah 测试运行程序和 Jasmine 库运行 Visual Studio 13。我想测试对 B 类有依赖关系的 A 类。A 类也对 JQuery 有依赖关系,所以我的代码如下所示:

但是当我运行测试运行程序时出现错误:错误:ReferenceError:找不到变量:$所以看起来测试运行程序无法解析 JQuery 的键入包含?

我试图添加以下代码:

但是编译器抱怨只有“.ts”文件是有效的?!那么我在这里错过了什么?我认为在 TS 文件中包含 JS 文件可以吗?为什么我需要 Jasmine-tests 中的 -blocks 而不是应用程序中的其他任何地方(编译器会自动解析依赖项)?

在 TypeScript 中运行 Chutzpah + Jasmine 时是否有解决依赖关系的“标​​准方法”?

0 投票
1 回答
1655 浏览

typescript - 用于在 Visual Studio 和 Visual Studio Team Services 构建中运行 TypeScript 测试的 Chutzpah 配置

我们有一个用 TypeScript 编写的 AngularJS 应用程序的 Visual Studio 2013 解决方案。Jasmine 单元测试有一个单独的测试项目,也是用 TypeScript 编写的。

我们遇到的问题是找到一个构建/Chutzpah 配置,该配置允许我们通过 Chutzpah 测试适配器在开发机器上运行测试,并且作为我们在 Visual Studio Team Services 上构建的 CI 的一部分。

当我们在开发机器上运行测试时,似乎默认情况下测试在源代码树中运行,因此 .d.ts 和应用程序 .ts 文件的依赖关系是相对于源目录设置的。到目前为止,一切都很好。但是,当我们运行 Visual Studio Team Services 构建(在此博客文章之后设置)时,测试似乎在 bin 目录中运行(查看 Visual Studio Team Services 日志)。这意味着依赖项的引用是错误的,因此测试失败,因为它们找不到所需的 .d.ts 或应用程序 .ts 文件。

到目前为止,我们发现的最佳解决方案是:

  • 将 Chutzpah.json 设置为“始终复制”,以便复制到 bin 目录
  • 始终将所有测试 .ts 文件设置为 TypeScriptCompile/Copy
  • 始终将所有测试 .d.ts 文件设置为 Content/Copy(例如 jasmine.d.ts)
  • 始终将应用程序项目中的所有 .ts 文件设置为 TypeScriptCompile/Copy
  • 更新测试文件依赖项以包含对 bin dir 正确的附加 chutzpah_reference(使用 chutzpah_reference 意味着 VS 本地构建仍将完成而没有错误)

然后我们可以通过两种方式在 VS 中运行测试:

  1. 从 VS 测试运行器正常
  2. 通过显示所有文件,找到 bin/Tests 目录并右键单击并“运行 JS 测试”(这是一个很好的指标,表明测试将在 TFS 上正确运行,假设构建定义、CI 和 .runsettings 设置正确)。

我们还尝试将 JS 输出重定向到 bin 目录,这在 VS 中运行良好,但是 VS Team Services 构建由于某种原因无法复制 .js 文件。

理想情况下,我们希望:

  • 避免必须将 .ts 文件复制到输出目录
  • 以避免必须专门为 bin 目录添加额外的引用。
  • 使用 Chutzpah 外部编译模式(因为 VS 已经编译了我们的 TypeScript)
0 投票
0 回答
847 浏览

tfs - Jasmine 单元测试在 TFS 构建服务器上使用 Chutzpah 运行失败......然后通过

我们目前有一个 Asp.Net MVC 应用程序,它利用 angularJs 作为我们的 javascript 框架。在使用 Angular 进行开发时,我们也使用 TypeScript。我们的单元测试是用 jasmine 编写的,测试运行者是 chutzpah。目前所有单元测试(总共 43 个)正在运行,并在 VS2012 测试资源管理器中本地通过。

然后,我们将 TFS 构建服务器配置为使用 chutzpah 运行单元测试,当它们运行时,我们遇到了奇怪的结果。正如你在下面看到的,单元测试已经运行了——但是,43 是我们编写的单元测试的数量,而不是 65。

在此处输入图像描述

在此处输入图像描述

好的,22 次失败的测试——这发生在我们最好的人身上。然而,奇怪的是当我们查看“日志”选项卡时:

在此处输入图像描述

紧接在测试失败列表下方的是我们编写的完整测试列表 (43),并具有通过状态。

总之,看起来单元测试运行了两次:第一次运行失败了所有测试,第二次运行通过了。有没有人遇到过这个问题?任何帮助,将不胜感激。

另外,我想包含我们正在使用的 chutzpah.json 文件 - 注意它引用 .js 文件并从测试执行中排除 .ts 文件。

0 投票
1 回答
426 浏览

typescript - 当我使用 PhantomJS 运行 Chutzpah 时,为什么我的打字稿测试会失败

我有一些打字稿测试,使用 Chutzpa 运行它们运行良好。

今天,我为Map<K,V>正在测试的模型添加了一个类型属性,现在当我使用无头 (PhantomJS) 运行程序运行它们时,所有使用该模型的测试都失败了。但是,如果我告诉 Chutzpah 在浏览器中运行它们(chrome),它们确实可以工作

我得到的错误是

找不到变量:在“某些路径”中映射

但是 JS 文件已被 Chutzpah 删除,所以我无法打开它们并查看问题所在。

我怀疑这可能是一些打字稿版本问题(无头跑步者可能使用的是较旧的打字稿版本),但不确定如何证明这一点或让无头跑步者使用指定版本的打字稿。

0 投票
1 回答
3405 浏览

typescript - 使用 Chutzpah.json 文件时使用 Chutzpah 运行测试时出现问题

当我提供 Chutzpah.json 文件时,我无法让 Chutzpah 运行我的打字稿测试。

我的项目如下所示:

在此处输入图像描述

我的 Chutzpah.json 文件如下所示:

当我使用这个 Chutzpah.json 文件运行时,会执行 0 个测试。使用这些参数运行命令行运行器的输出:

chutzpah.consle.exe /path \hacapp.web\hacapp.web.Tests\Scrpts\TypescriptTests.ts /trace /debug

在这儿

生成的 html 文件的内容似乎不包含对 TypescriptTests.js 文件的任何引用:

如果我然后重命名 Chutzpah.json 文件,使其不再使用,然后再次运行命令行工具,那么这次它运行测试,这在日志文件中,这就是 html 的样子:

我在配置上做错了什么?

0 投票
2 回答
515 浏览

angularjs - 单元测试 $rootScope.$$phase 和 $rootScope.$digest()

我的网站有

然后调用

单元测试可以正常工作$broadcast$on但是如何对内部函数进行单元测试?又名 make $rootScope.$$phasefalse 以便$digest()被调用...

我试图模拟整个$rootScope对象,但无法以这种方式工作。这更多是出于代码覆盖的目的,因为单元测试都运行良好。任何帮助表示赞赏!提前致谢!