简而言之,与Cucumber的主要麻烦在于,不可能像以下那样执行依赖于实现的测试:
Then /^he should see an error message$/ do page.should have_selector('div.alert.alert-error',text: 'InvalID')end
写这样的RSpec自定义匹配器:
RSpec::Matchers.define :have_error_message do |message| match do |page| page.should have_selector('div.alert.alert-error',text: message) endend
因为这样的自定义匹配器必须放在spec / support / utilitIEs.rb中,并且可以从RSpec集成测试调用,但不能从Cucumber步骤定义调用.
你是积极的/你对此有何看法?
谢谢.
解决方法 您可以将依赖于实现的或可重用的方法,定位器放到Cucumber World中.您的方案示例:
# step_deFinitions/general_steps.rbThen /^he should see an error message "(.+)"$/ do |text| within(error_message) do page.should have_content(text) endend# support/general_helpers.rbmodule GeneralHelpers def error_message page.first('div.alert.alert-error') endendWorld(GeneralHelpers)
以下是一些引用此方法的文章:
> It’s time to clean up your mess: refactoring Cucumber step definitions
> Using Cucumber World
以上是内存溢出为你收集整理的ruby-on-rails – RSpec定制匹配黄瓜到DRY实现相关的测试,是否可能?全部内容,希望文章能够帮你解决ruby-on-rails – RSpec定制匹配黄瓜到DRY实现相关的测试,是否可能?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)