ruby-on-rails – RSpec定制匹配黄瓜到DRY实现相关的测试,是否可能?

ruby-on-rails – RSpec定制匹配黄瓜到DRY实现相关的测试,是否可能?,第1张

概述我正在阅读Michael Hartl撰写的新版“Rails Tutorial”,因为我非常喜欢使用Cucumber的BDD,我发现自己很担心作者在这里指出的内容: http://ruby.railstutorial.org/chapters/sign-in-sign-out?version=3.2#sec:rspec_custom_matchers 简而言之,与Cucumber的主要麻烦在于,不可 我正在阅读Michael Hartl撰写的新版“Rails Tutorial”,因为我非常喜欢使用Cucumber的BDD,我发现自己很担心作者在这里指出的内容: http://ruby.railstutorial.org/chapters/sign-in-sign-out?version=3.2#sec:rspec_custom_matchers

简而言之,与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实现相关的测试,是否可能?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1286701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存