问题标签 [cucumberjs]

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

javascript - 如何在 Cucumber-JS 步骤定义中使用 Node-mysql 连接到 MySQL?

我正在尝试使用node-mysql通过 world.js 中定义的连接方法连接到我的 Cucumber-JS stepDefinition 文件中的 MySQL 数据库。不幸的是,它不会连接并返回我的查询结果,我也无法让它显示一条错误消息,帮助我找出哪里出错了。

我过去使用过 Cucumber-JVM,但对 JavaScript 和 node.js 还是陌生的。我用相同的方法创建了一个独立的 js 文件(模仿 world.js),并从另一个测试脚本成功调用它(模仿 stepDefinitions.js);它连接并愉快地返回记录,所以这可能是由于我对 JavaScript 中的上下文的误解,或者在 Cucumber-JS 使用世界的方式中,也许......

stepDefinitons.js:

世界.js:

当我执行代码时,我从 connection.connect() 中什么也得不到,既没有错误也没有日志,没有记录从 connection.query() 中注销,并且“连接状态 2 =”的连接显示(在底部) _connectCalled 值为 true,但状态为断开连接且 threadId 为 null:

0 投票
1 回答
315 浏览

node.js - Cucumber JS 并实际完成了一些事情

在完全困惑并在教程之后谷歌搜索教程,阅读不涵盖 JS 实现的有关黄瓜的书籍之后,我克服了对火焰的恐惧并决定在这里发布我的问题。

我已经在我的盒子上设置了 Cucumber-JS,运行良好。我使用 CoffeeScript,因为我很懒。我得到了我的 features 文件夹,写了我的 .feature。得到了我的步骤定义,并发现 Cucumber JS 需要一个“世界”的东西才能接近有用。刚才我还发现,可以对 env.js 进行一些调整,以使此设置找到我的应用程序的其余部分。

我不是在构建基于 Web 的应用程序,因为我希望首先制定一些核心逻辑。我的麻烦开始的地方是我现在应该如何继续的部分。

我在项目根目录中有一个名为“lib”的文件夹。在其中,它将有我的 JS 应用程序,我最终将通过 NodeJS 运行它。

我必须对 env.js、world.coffee 和 mystep 定义进行哪些更改才能测试我在 lib/myapp.coffee 中开发的代码?

谢谢!

0 投票
1 回答
96 浏览

meteor - 使用 Meteor 进行自动化测试

我正在接近用 Meteor 做一些真正有用的事情。在与 NodeJS 和 Cucumber 交战之后,我终于到了超越写一些 Gherkinish 的界限的阶段——而且我被提供自动化测试设施的 Ruby 框架(如 Capybara)宠坏了,我想问一下哪种解决方案将适合 Meteor、Flow Router、Blaze、Cucumber 和 CoffeeScript 进行此类自动化,模拟和统一真实用户与流星应用程序的交互。

非常感谢您的反馈!

0 投票
1 回答
159 浏览

cucumber - 用量角器和黄瓜处理了几次测试

我实际上是在尝试配置量角器和黄瓜来运行测试,实际上它们似乎被启动了好几次。这是我的命令的结果NODE_ENV=test protractor test/protractor.conf.coffee

这是功能

这是我的protractor.conf.coffee

你知道他们为什么要发射几次吗?

0 投票
1 回答
457 浏览

cucumberjs - 你能指出一个使用 cucumber.js 和 frisby.js 的例子吗?

我们想在黄瓜步骤中使用 frisby.js。谁能指出我做同样的例子?

谢谢

0 投票
3 回答
2146 浏览

cucumberjs - 有没有办法在前一个场景中的步骤失败后继续执行测试场景?

每当在远程服务器上运行时出现步骤失败,我想捕获失败的步骤,然后继续运行剩余的场景。然后将捕获的步骤包含在文件中以用于报告目的。这是一种可能吗?我在其他地方看到的所有回复都只是说你应该在继续之前修复测试。我同意,但我只希望测试在本地运行时停止,而不是远程运行。

➜ customer git:(pat104) ✗ cucumber.js -f progress (pat104⚡) ...F-----Failed scenario: View and select first contact from contact history ...F-Failed scenario: View and select a contact from multiple contacts in history ..................................................F---Failed scenario: Navigating to profile with url and enrollmentId ...................................................F-Failed scenario: Successful MDN Search with 1 result returned. Tech Selects and continues .............FFailed scenario: Successful MDN with multiple results

0 投票
1 回答
352 浏览

javascript - 将 Protractor 与 SystemJS 一起使用的正确方法是什么?

这个问题也应该适用于 requirejs。

具体情况:

  • 量角器
  • SystemJS 加载 ES6 BabelJS 转译的系统模块
  • 黄瓜.js
  • 柴,柴如约而至

我问的原因是因为我只有几个非常基本的黄瓜测试,有时我会收到涉及超时或等待与页面同步等的错误(不一致)。其他时候我的测试通过并且没有给出超时错误。关于这些问题没有大量的权威信息。主要是一堆 SO 和 github 问题。

将 Protractor 与 SystemJS 一起使用的正确方法是什么?

0 投票
0 回答
256 浏览

javascript - CucumberJS - 标记 Hooks 只执行某些场景?

我的功能文件目前是这样写的:

我将如何添加标记的钩子以仅执行与用户相关的场景。

我想我会在登录场景中添加@user1、@user2 标签,然后在 User1 场景中添加 @user1 标签,在 User2 场景中添加 @user2 标签。

但是我需要编写什么 javaScript 来制作这样的测试流程:

  • 检查登录... (user1)
  • 用户 1 应该能够...
  • 检查登录... (user2)
  • 用户 2 应该能够...
  • 用户 2 应该无法...

也许我完全错了,每个用户都需要不同的功能文件?

任何建议都会很棒。

0 投票
0 回答
1010 浏览

javascript - Cucumber.JS,通过调用先前定义的步骤场景来保持背景干燥,也就是在步骤中调用步骤

我希望能够在调用运行前一个场景中的步骤的场景之前运行背景。例如,我有一个创建用户并将其称为“创建用户”的场景。我想创建一个名为“重置密码”的新场景,它在其功能定义中使用“创建用户”作为背景。

例如,这是我的功能:

所以我希望能够从上面调用“我创建一个帐户”来在下面运行它:

在 Ruby 版本 Cucumber 中,他们能够从可行的步骤中调用步骤: https ://github.com/cucumber/cucumber/wiki/Calling-Steps-from-Step-Definitions

但是 Cumcumber 的 JavaScript 实现,他们拒绝实现这一点,我一生都无法弄清楚他们为什么要这样做: https ://github.com/cucumber/cucumber-js/issues/11

如何在整个项目中保持代码 DRY 并且不重复场景步骤代码?

0 投票
1 回答
2344 浏览

javascript - 使用 Selenium 步骤定义从 CucumberJS 执行回调

我正在用 Selenium 和 PhantomJS 试用 CucumberJS。我已经使用这个 StackOverflow 答案作为指南成功地构建了一个 World 对象。

所以现在我正在测试一些基本的步骤定义,但对如何在步骤结束时执行回调有些困惑。这很好用:

驱动程序访问 Google.com,直到加载请求的文档后才会触发回调。但是我发现这个语法有点罗嗦,所以我想也许我可以直接传递callbackthen()我的第一个承诺之后,就像这样:

然而,这失败console.log了,似乎callback. 这是输出:

这里发生了什么?我期待它callback可以简单地传递给then()函数并在承诺完成后执行。为什么将其包装在匿名函数中使其工作?