问题标签 [jasmine2.0]

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 投票
1 回答
16030 浏览

javascript - 茉莉花钟的工作原理是什么?

我不想花几个小时阅读代码来找到相关部分,但我很好奇 jasmine 如何实现它的时钟。它的有趣之处在于它可以使用同步测试代码来测试异步代码。AFAIK,使用当前支持 ES5 的 node.js,这是不可能的(异步函数在 ES7 中定义)。它是否使用 estraverse 之类的东西解析 js 代码并从同步代码构建异步测试?

只是我所说的一个例子:

在这里expect(i).toBe(1);应该在回调中。

0 投票
0 回答
735 浏览

protractor - AngularJs Protractor:Jasmine 2.0 量角器配置选项

再次返回一些量角器查询。我正在使用 Jasmine 2.0,所以我可以利用“beforeAll()”和“afterAll()”方法。我在控制台日志中注意到输出不像以前的版本那样详细。例如,当测试运行时,它会在控制台中显示“it”块的名称,并提供文件名、路径和发生故障的行号。所以,我想知道 Jasmine 2.0 控制台输出是否有更详细的配置选项。任何帮助是极大的赞赏!

0 投票
1 回答
400 浏览

angularjs - 使用量角器 2.0 在 beforeAll 中调用 clear() 行为不端

我已经从量角器 1.8 升级到量角器 2.0。在 it 块中执行测试场景之前使用 beforeAll (jasmine 2.0) 登录我的应用程序时,我看到了奇怪的行为。似乎对 element.clear() 的第一次调用是最后发生的。我看到这种情况发生:

  1. “teacher01”被输入到 usernameFld
  2. 机构Fld 被清除
  3. “school01”输入到机构Fld
  4. passwordFld 被清除
  5. “teacherpassword”被输入passwordFld
  6. usernameFld 被清除
  7. loginBtn 被点击
  8. 测试失败,因为 usernameFld 为空

有人可以告诉我我做错了什么(见下面的代码)?

笔记:

我试过切换到directConnect。我尝试将 clear() 和 sendKeys() 分成不同的行。似乎都没有帮助。

使用相同的代码并回滚到量角器 1.8.0,我没有这个问题。先清除usernameFld,然后在usernameFld中输入用户名,测试就可以正常登录了。将登录代码从 beforeAll 移到“it”块中,也可以使测试按预期运行。

请注意,passwordFld 是密码类型的输入,而 loginBtn 只是一个按钮。这是对非角度网页的测试。我正在使用 jasmine 2.0、chrome 浏览器 41.0.2272.101、firefox 36.0.4 并从测试脚本启动 selenium 服务器。

HTML:

conf.js:

测试:

0 投票
0 回答
281 浏览

jasmine - 如何测试自定义 Jasmine 匹配器?

我为 Jasmine 2.x 创建了一些自定义匹配器,我想为其创建规范。大多数程序员通过在测试中应用它们来测试他们的匹配器,以验证输出代码是否为正。

例如.toEqual“自定义”匹配器:

但是,我还想针对失败的情况测试匹配器,并且我想测试它们在匹配器失败时产生的消息,例如以这种方式。

代码示例中的变量matcher是我使用添加的匹配器函数jasmine.addMatchers({ toEqual: matcher })

因为我不想污染全局空间,所以我不知道如何在我的规范中使用匹配器。默认的 jasmine 匹配器在其中,它们通过某个对象jasmine.matchers添加到它们的规范中。$j

所以主要问题实际上是:当我将自定义匹配器添加到 Jasmine 时,它​​们存储在哪里?我可以检索它们的规格还是隐藏在封闭中?

编辑

似乎addMatchers正在调用env.addMatchers,这将匹配器推到runnableResources[currentRunnable().id].customMatchers. RunnableResources 是一个闭包...

0 投票
1 回答
408 浏览

jasmine - Jasmine2 堆栈跟踪

当我们使用 jasmine2 框架运行量角器测试时,我们会得到相当无用的堆栈跟踪,如下所示。这些是零星的,而且从不在同一个地方两次。我可以重新运行测试,它会工作得很好。

究竟是什么导致了这种类型的错误,我该如何解决?

0 投票
1 回答
338 浏览

gulp - gulp-protractor 报告跳过的测试失败

运行开箱即用的“量角器”命令会按预期运行我的整个 E2E 目录。我已禁用的测试报告为已跳过。

但是,我现在使用 gulp-protractor 来处理 E2E。但是当我运行 gulp protractor 时,禁用的测试报告为失败。

我似乎无法弄清楚问题是什么。

这是控制我的 gulp e2e 任务的代码。

0 投票
0 回答
105 浏览

javascript - 并行运行 Protractor2/Jasmine2 规范(shardTestFiles)时,日志在哪里写入?

我希望shardTestFiles: true在 Protractor 2.1.0 和 Jasmine 2.2.1 上并行运行一些规范(例如)。规格运行得很好,但是我有一些日志记录在完成后我确实需要,但没有显示。我只从测试中得到简单的“..F”输出(即使设置了自定义报告器)。

在分片测试的情况下,日志写入到哪里,我如何访问它们?最好的情况是输出到文件。

0 投票
2 回答
22709 浏览

javascript - 茉莉花间谍的重置电话不返回

我正在使用 Jasmine (2.2.0) 间谍来查看是否调用了某个回调。

测试代码:

这按预期工作。但是现在,我要添加第二个级别:

这个测试永远不会返回,因为显然done回调永远不会被调用。如果我删除 line spy.reset(),测试确实完成,但显然在最后一个期望上失败了。但是,该callCount字段似乎是undefined,而不是2

0 投票
1 回答
7311 浏览

angularjs - 如何使用 Jasmine2 创建量角器报告

我最近开始使用量角器库来测试 angularjs 站点。我尝试使用以下 2 个库来创建 HTML 报告,但在这两种情况下我都得到了错误

https://www.npmjs.com/package/protractor-jasmine2-html-reporterhttps://www.npmjs.com/package/protractor-jasmine2-screenshot-reporter

平台:- Windows 7

安装cmd:- npm install -g protractor-jasmine2-html-reporter

错误:找不到模块“量角器-jasmine2-html-reporter”

配置.js

如果我遗漏了什么,请告诉我。提前致谢。

0 投票
2 回答
12968 浏览

angularjs - 是否可以强制量角器通过或跳过向控制台发送消息的测试?

我正在使用具有多个外部系统依赖项的系统。这些外部系统仅连接到某些 SDLC 环境(本地、开发、质量保证和产品)。由于这些限制,我在我的一些量角器测试中进行了环境检查,以确定它们在执行之前所处的环境。

例如:

“测试 A”正在运行,但它依赖于与“外部系统 1”的交互,该系统仅在 QA 环境中启用。因此,如果在 Local、Dev 或 Prod 中运行“测试 A”,则测试将失败,并使用 fail() 向控制台显示一条消息。

我的问题是......有没有办法强制测试通过或被跳过类似于使用fail()的消息?我试图在测试实际通过或失败的功能原因之间进行描述,以及是否由于我的报告中的环境依赖性而简单地跳过了测试。

我知道当您使用“fdescribe”或“fit”时,您可以在技术上“跳过”测试,控制台将打印出类似于以下内容的内容

如何从我的测试中调用该跳过功能?