问题标签 [cucumber]

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 投票
11 回答
17503 浏览

ruby-on-rails - 带有 Cucumber Stories 的会话变量

我正在为一个有多个步骤的“注册”应用程序编写一些 Cucumber 故事。

与其编写一个 Huuuuuuuge 故事来一次涵盖所有步骤,那样会很糟糕,我宁愿像普通用户一样完成控制器中的每个操作。我的问题是我将在第一步中创建的帐户 ID 存储为会话变量,因此当访问第 2 步、第 3 步等时,会加载现有的注册数据。

我知道能够controller.session[..]在 RSpec 规范内访问,但是当我尝试在 Cucumber 故事中执行此操作时,它会失败并出现以下错误(而且,我还在某处读过这是一种反模式等......):

使用 controller.session[:whatever] 或 session[:whatever]

使用会话(:随便)

所以,似乎加入会话存储是不可能的。我想知道的是是否有可能(我猜哪个是最好的..):

  1. 模拟会话存储等
  2. 在控制器中有一个方法并将其存根(例如get_registration,它分配一个实例变量......)

我浏览了 RSpec 书(好吧,略读)并浏览了 WebRat 等,但我还没有真正找到我的问题的答案......

再澄清一点,注册过程更像是一个状态机——例如,用户在注册完成之前要经过四个步骤——因此“登录”并不是一个真正的选择(它打破了网站工作方式的模型)...

在我的控制器规范中,我能够取消对基于会话变量加载模型的方法的调用 - 但我不确定“反模式”行是否也适用于存根和模拟?

谢谢!

0 投票
1 回答
1330 浏览

ruby-on-rails - 黄瓜:rails动态发现在paths.rb中不起作用

我正在使用 rspec、rspec-rails、cucumber 和 webrat 开发 Rails。我正在尝试学习 BDD 和一般测试。我有一个这样的黄瓜场景:

我已经添加了第 1 步,在这里我正确地创建并保存了一个测验(我通过 puts 进行了测试)。现在我正在执行第 2 步。我在 paths.rb 中添加了一个新路径

由于某种原因find_by_title不起作用。我收到此错误消息:

我确定记录在那里,并正确保存;如果我插入

我得到“珍珠果酱”。看起来find_by不起作用,这很奇怪,因为黄瓜生成的文件包含以下示例:

我还尝试了一个更简单的 find 条件,它也不起作用。

任何想法?

在此先感谢,
戴维德

0 投票
2 回答
600 浏览

ruby-on-rails - 让黄瓜运行迁移而不是模式加载

所以我在迁移中加载了一些数据,例如在创建用户表时创建默认用户,并在创建 foos 表时创建某些用户角色(如 foo_admin)。

问题是黄瓜不喜欢这样,因为它会加载模式。

我可以让黄瓜只运行迁移,还是有更好的做法来做这种事情?机械师被用作工厂(没有固定装置!)

0 投票
2 回答
923 浏览

rspec - cucumber + webrat:检查出现两次的文本

我正在开发一个 Rails 应用程序来自学 BDD 和一般测试。在 railcasts video tuts 之后使用 cucumber + webrat + rspec。在这个应用程序中,一个测验 has_many questions。我正在测试的视图应该两次且不连续地呈现问题。(这里不测试连续性)我有一个旨在检查这个的黄瓜场景

我的步骤是这样定义的:

我用一个工具测试了正则表达式,它似乎可以工作,但是在黄瓜上测试失败了。
我搜索了一些文档,但 webrat 的唯一文档是 API 文档;我无法将响应显示为文本。有什么建议吗?

0 投票
2 回答
811 浏览

ruby-on-rails - 在 Rails 应用程序中使用黄瓜进行 autospec

我的黄瓜功能工作正常,rspec 规格工作正常我可以同时运行黄瓜功能和规格规格,它们都可以工作,但现在我正在考虑让 autospec 运行,但运行会产生以下结果

警告:$KCODE 为 NONE。/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.3.90/lib/cucumber/step_definition.rb:100:警告:方法重新定义;丢弃旧的正则表达式/opt/local/lib/ruby/gems/1.8/gems/treetop-1.2.6/lib/treetop/ruby_extensions/string.rb:31:警告:方法重新定义;丢弃旧缩进/opt/local/lib/ruby/gems/1.8/gems/treetop-1.2.6/lib/treetop/compiler/node_classes/character_class.rb:13:警告:在无效上下文/opt中无用地使用文字/local/lib/ruby/gems/1.8/gems/treetop-1.2.6/lib/treetop/compiler.rb:5:警告:全局变量“$exclude_metagrammar”未初始化/opt/local/lib/ruby/gems/ 1.8/gems/treetop-1.2.6/lib/treetop/compiler/metagrammar.rb:232:警告:方法重新定义;丢弃旧空间/opt/local/lib/ruby/gems/1.8/gems/treetop-1.2.6/lib/treetop/compiler/metagrammar.rb:388:警告:方法重新定义;丢弃旧空间/opt/local/lib/ruby/gems/1.8/gems/treetop-1.2.6/lib/treetop/compiler/metagrammar.rb:771:警告:方法重新定义;丢弃旧空间/opt/local/lib/ruby/gems/1.8/gems/treetop-1.2.6/lib/treetop/compiler/metagrammar.rb:779:警告:方法重新定义;丢弃旧空间/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.3.90/lib/cucumber/parser/feature.rb:28:警告:方法重新定义;丢弃旧的白色/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.3.90/lib/cucumber/parser/feature.rb:36:警告:方法重新定义;丢弃旧的白色/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.3.90/lib/cucumber/parser/feature.rb:679:警告:方法重新定义;丢弃旧的白色/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.3.90/lib/cucumber/parser/feature.rb:687:警告:方法重新定义;丢弃旧的白色/opt/local/lib/ruby/gems/1。8/gems/cucumber-0.3.90/lib/cucumber/parser/feature.rb:813:警告:方法重新定义;丢弃旧的白色/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.3.90/lib/cucumber/parser/feature.rb:825:警告:方法重新定义;丢弃旧的白色/opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.3/lib/active_support/core_ext/blank.rb:49:警告:方法重新定义;丢弃旧的空白?

我正在运行 AUTOFEATURE=true autospec

有没有解决办法

干杯

0 投票
2 回答
775 浏览

ruby-on-rails - 用黄瓜和 webrat 测试 authlogic-open-id 的最佳方法是什么?

我在使用 cucumber 和 webrat 在 rails 应用程序中测试 authlogic-openid 身份验证时遇到了麻烦。按照 Ryan Bates 的出色截屏视频,我能够使用 open-id 插件安装 authlogic。当我使用浏览器登录时,OpenID 可以工作,但到目前为止,我无法使用 cucumber 和 webrat 测试应用程序。

我尝试使用rots作为虚拟的开放 id 服务器。当我在浏览器中尝试它时,这再次起作用,但 webrat 不会正确遵循使用虚拟开放 id 服务器进行身份验证所需的 get/post 重定向。

SO上的这个答案建议覆盖身份验证方法以始终返回成功登录,但这种方法似乎不像集成测试应用程序。

功能测试 authlogic-open-id 的最佳方法是什么?我应该打扰吗?当用户已经登录并假设 OpenID 可以工作时,我应该测试这些操作吗?

0 投票
1 回答
847 浏览

ruby - 使用模块扩展黄瓜并访问之前/之后的钩子

我正在尝试编写一个通用模块来扩展 World 类。我需要从模块内访问 Before 和 After 挂钩。我正在使用扩展方法执行此操作,但此时之前/之后似乎不可用。

还有其他方法可以访问这些钩子吗?

0 投票
1 回答
5101 浏览

ruby-on-rails - 如何将 Tim Pope 的 cucumber.vim 插件用于 vim?

我已根据说明将 cucumber.vim 文件加载到 ftplugin 和其他目录中,但我对 ftplugin 语法的理解不足以弄清楚如何获得全部好处。

据我所知,该插件应该能够在步骤定义和功能文件之间跳转,但我无法弄清楚我的映射有什么问题。看起来好像映射应该是通常的 ctag 映射 Ctrl+],但这不起作用。

任何想法如何使这些映射工作?

这是插件的链接:

http://github.com/tpope/vim-cucumber/tree/master

干杯!

0 投票
1 回答
1153 浏览

ruby - 非 Ruby 应用程序的 Cucumber 和测试数据管理

我正在测试一个基本上是消息处理应用程序的应用程序 - 一条消息进来,它的内容被分析,然后它被发送到其他地方进行处理。该应用程序不是用 Ruby 构建的。

正如您可能想象的那样,主要的测试方法包括生成一大堆不同类型的(非常复杂的)消息,将它们加载到应用程序中,等待几秒钟,然后确保它们被发送到正确的位置。

从功能上讲,测试进展顺利,但我目前已经在 Ruby 代码中定义了所有测试消息和所需的消息目的地——我想将它们移动到 YAML 文件或(第二选择)数据库中。我更喜欢使用 YAML 文件而不是数据库,因为它更容易进行版本控制,并且非技术测试人员可以直接编辑消息内容。

是否有“推荐”的方式在 Cucumber 中实现这种数据管理?有点像夹具方法的味道是有道理的,但对我来说,夹具总是涉及从文件中填充数据库,然后使用数据库进行测试,我不能 100% 确定这是最适合/最简单的方法。问题。

0 投票
2 回答
3015 浏览

cucumber - Cucumber 中的数据驱动测试

我必须测试一个消息路由应用程序,其功能大致如下: - 消息被发送到应用程序 - 应用程序检查消息 - 消息被转发到某处,基于消息的内容

绝大多数测试用例几乎相同;生成特定类型的消息,将其加载到系统中,等待几秒钟,然后检查所需的目的地以确保消息被正确转发。

与其在 Cucumber 中生成 100 个几乎相同的测试用例,有没有推荐的方法来生成一个测试用例,并让它反复循环遍历所有 (message, required_destination) 元组?为了便于维护,我更愿意将这些元组维护到 YAML 文件而不是数据库中,但任何一种解决方案都可以。