ruby - 无方法错误 : undefined method `expect' when trying to use it within a SitePrism class

标签 ruby cucumber capybara site-prism

我有一个 cucumber、ruby、siteprism 项目,我们在其中使用“rspec”gem 来检查期望值。这包含在我们的 env.rb 中,并在步骤定义中成功使用。

我现在正尝试在 SitePrism 类中做出一些断言,但出现错误。你知道我如何使用那些 expect() 方法吗? 我尝试在定义 SitePrism 类的 .rb 文件中使用 require 'rspec' 加上 include Rspec,但我仍然遇到同样的错误:

expect(local_value).to eq(@previous_value)
=> Error: NoMethodError: undefined method `expect' for #<xxx_Object @loaded=false>

谢谢!

最佳答案

正如您(从您的评论中)发现的那样,您可以在页面对象类中包含 RSpec::Matchers 以获得 expect 以及 RSpecs 默认匹配器。其中一个匹配器被命名为 all ,它会隐藏之前包含在对象中的 Capybara::DSL all 方法,并产生您所看到的错误。解决该问题的方法是在 current_session 对象(page)或别名“find_all”上调用 all 的 Capybara 版本。所以 all(...).map(...) 变成了

page.all(...).map(...) # Same as Capybara.current_session.all(...)...

find_all(...).map(...)  # or page.find_all ...

关于ruby - 无方法错误 : undefined method `expect' when trying to use it within a SitePrism class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42248992/

相关文章:

运行 Cucumber 功能时出现 java.lang.ClassNotFoundException : sun. Reflect.ConstantPool

ruby-on-rails - capybara 的 HTTP 基本认证

ruby-on-rails - RSpec 请求规范测试模型属性

ruby - RSPEC Let 与创建昂贵对象的实例

rspec - BDD 循环 - 如何加入后端与前端

ruby - 检查字符串末尾的子字符串

ruby-on-rails - 如何使用DatabaseCleaner[:active_record].策略=:与 Selenium 的交易

ruby-on-rails - 我应该如何使用 Rspec 和 Capybara 测试 Omniauth?

ruby-on-rails - 您如何使用 Devise 保护 Controller 操作?

ruby - 为什么会有不同的 Ruby 实现?