问题标签 [karma-runner]

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 回答
529 浏览

ant - 业力 - JUnitReport - ANT:空报告

我有一些正常运行的 AngularJS E2E 测试,并将记者设置为:

生成报告 xml 文件并包含 testsuites->testsuite->testcases...的层次结构。

我正在尝试使用 ANT 生成 HTML 报告。

HTML 文件生成正确,但表中的所有值都是空的,0 次测试,0 次失败等...

我究竟做错了什么?

提前致谢

0 投票
2 回答
2300 浏览

angularjs - AngularJS:E2E 测试中的访问范围

我试图在 E2E 测试中访问 $scope,但没有成功...

作为测试,我尝试了这个:(我的网站不使用 JQuery ..)

跑步者将我的网站放在一个嵌套的 iframe 中,所以我直接访问它,然后获取所有 ng-scopes 并在它们上尝试 .scope() ,如本文和下面的代码中所示......

上面的代码找到了正确的元素,但是对它们调用 scope() 会为每个返回 undefined ....

有人可以确认或否认我们可以访问 E2E 中的范围吗?我想有办法吗?

谢谢

0 投票
1 回答
343 浏览

javascript - 如何使用 Linq2IndexedDB 插入对象

我正在通过单元测试(通过Mocha)尝试 Linq2IndexedDB(v. 1.0.21),但我什至无法进行简单的插入工作。发生的情况(在 Google Chrome 下运行时)是在 Linq2IndexedDB.js 的第 1535 行引发内部异常:

Uncaught TypeError: Cannot read property 'version' of undefined

我的单元测试代码如下所示;基本上有一个测试,“它可以添加对象”:

我在这里做错了什么,还是 Linq2IndexedDB(或两者)中存在错误?

在 Github 上建立了一个相应的测试项目,并配有Karma配置,因此您可以轻松运行包含的测试。Karma 配置假定您已安装 Chrome。

0 投票
3 回答
1598 浏览

angularjs - AngularJS + Karma (Testacular) - 单元测试失败

我正在尝试在 Karma 中为基于 AngularJS 的 Web 应用程序创建我的第一个单元测试。我使用 Jasmine 作为测试框架。

我的单元测试看起来像:

现在,当我运行测试时,我收到以下形式的错误:

这种期望的 LHS 是在控制器范围内定义的变量。可以看出,该值已被拾取并且比较似乎也是正确的 - 但 Karma 将其报告为失败/错误。

知道为什么吗?

0 投票
4 回答
7523 浏览

angularjs - AngularJS - 错误:未知提供者:searchResultsProvider

编辑:我设法让我的单元测试运行 - 我将包含服务的代码移动到不同的文件和不同的模块,使这个新模块成为 fooBar 模块的要求,然后在调用每个“it”块之前,引入代码beforeEach(module(<new_service_module_name))。但是,我的应用程序仍然无法运行。控制台也没有错误。这是唯一剩下的问题——当我使用全局范围来定义控制器时,应用程序可以工作,但是当我使用 angular.module.controller 时——它不会。

我有一个app.js包含以下内容的文件:

我有另一个文件controllers.js,其中包含以下内容:

searchResults是我创建的一个服务,它只有 getter 和 setter 方法。上面的控制器使用 setter 方法,因此服务被注入其中。

结果,我的应用程序无法运行!如果我将控制器代码更改为全局的,如下所示:

然后应用程序工作!

此外,如果我使用全局范围,则以下单元测试用例有效:

如果我恢复到模块范围,我会收到错误 -
Error: Unknown provider: searchResultsProvider <- searchResults

因此,通过使用全局范围,我的应用程序和单元测试运行,但通过使用 app.controller,它们似乎中断了。

我注意到的另一点是,如果我将控制器代码包含在app.js而不是 中controllers.js,那么应用程序和单元测试将再次开始工作。但是我不能将它们包含在同一个文件中 - 如何在不破坏应用程序和单元测试的情况下让它在角度范围内运行?

0 投票
2 回答
4319 浏览

angularjs - 编写 Jasmine Test (BDD) 时在“describe”中包含多个“it”

我目前正在 Jasmine 中编写一个测试,使用 Karma 作为 JS 运行器。“描述”中是否可以有多个“它”,如下所示:

它目前失败了,但是你如何编写一个没有冗余的测试(在这种情况下,必须描述同一个控制器,两次)?

0 投票
8 回答
40046 浏览

environment-variables - 为 CHROME_BIN 设置环境变量不起作用

我正在尝试使用 Karma 来测试我的 js 脚本。在文档中它说我应该设置环境变量CHROME_BIN

我已将其设置为

%programfiles(x86)%"\Google\Chrome\Application\Chrome.exe

但是当我输入%CHROME_BIN%DOS 时,它会失败,因为它被截断C:\ProgramProgram Files.

我可以做些什么来解决这个问题?

0 投票
1 回答
1197 浏览

angularjs - AngularJS:端到端测试问题

我正在尝试为我的应用程序创建端到端测试。我刚刚进行了一个基本测试,它工作正常。

上述测试工作正常。

现在,我正在ng-repeat对元素使用指令。每次单击按钮时,此重复的数组都会增加 1 个计数。因此,我编写了以下测试:

我正在使用 runner.html(可以在 AngularJS 端到端教程中找到)。当我加载页面时,第一次测试是成功的。但是,第二次测试导致以下错误:

我确实有一个带有类的按钮,add-criteria如下所示:

然而,测试失败了。如果我删除.add-criteria并用 替换它.new-criteria,即使这样我也会得到同样的错误。不知何故,repeater()能够获得正确的元素,但element()报告找不到匹配选择器的元素。

知道出了什么问题吗?

编辑:我想在这里补充一下,我正在使用 AngularJS 和 Node / Express。我的目录结构与angular-express-seed中的目录结构相同。我发现问题的发生是因为 CSS 和 JS 文件位于 public 文件夹中,而 HTML 页面位于 views 文件夹中。将 CSS 和 JS 文件复制到 views 文件夹解决了我的问题如何在不复制到 views 文件夹的情况下实现此目的?

0 投票
3 回答
71647 浏览

angularjs - 测试某些元素是否可见

我如何确定一个元素在睾丸(茉莉花)中是可见的还是隐藏的?

我的 DOM 看起来像:

要么显示选择,要么显示输入框,但不能同时显示两者。我希望检查哪个元素是可见的(基于其他一些标准),但我似乎无法弄清楚如何让代码工作。我写了以下代码:

但我收到一个错误:

如何检查输入是否可见并且选择是否同时隐藏(反之亦然)?

编辑:我想在这里补充一点,这是一个端到端的测试

0 投票
2 回答
3318 浏览

tfs - 可以将 Karma 与 TFS 构建一起使用

我是 Testacular(现在是 Karma)的新手。但我发现它非常强大,非常适合自动跨浏览器 JS 测试。所以我想知道是否可以将它用作 TFS 构建过程的一部分来进行自动 JS 代码单元测试?如果有人有以前的经验,请告诉我们要注意什么,以免我们走错路。

问候,君