我想在我的黄瓜框架中进行一个转换,每当我给出“测试测试”时,我应该在我的步骤定义中得到test_test。
我写了一个如下的转换:
SPACE_TO_UNDERSCORE = Transform /^([^"]* [^"]*)$/ do |string| string.tr!(" ", "_") end
这让我迈出了一步:
And the user selects yes to "dual nationality" on "edit user" details page
至
And(/^the user selects yes to "([^"]*)" on "([^"]*)" details page$/) do |field,page| # field is now dual_nationality # page is now edit_user end
它可以工作,但唯一的问题是它还捕获了黄瓜表的步骤,如下所示,并将table转换为table:case_number字符串。如果不使用转换,则table为Cucumber::MultilineArgument::DataTable。因此,如果转换与其内容相匹配,则转换显然会影响该表。
在可以排除表内容的transform中,有什么方法可以做到这一点吗?
When the user loads a url with below case details | case number | | 154745 |
When(/^the user loads a url with below case details$/) do |table| #table => "table:case_number" end
发布于 2016-02-23 00:00:09
我建议不要像这样编写场景步骤,并避免转换。你的步骤解释了用户是如何说他们是双重国籍的。它不需要这样做。考虑一下:
Given the user has dual nationality
Given I am a dual national
When the user confirms their dual nationality
When I confirm my dual nationality当然,还有许多其他方式来表达这一点。
所有这些步骤都不需要转换,也不需要正则表达式,只需执行如下操作即可轻松实现
find_by_css('#dual_national').set(true)假设您有一个dual_national复选框。
一般来说,每次你在你的场景中详细描述“如何”做事情的时候,你只会让你自己的生活变得更加困难。在使用Cucumber时,不需要使用表、转换,甚至(大多数情况下)正则表达式
https://stackoverflow.com/questions/35551964
复制相似问题