我有一个黄瓜,红宝石,siteprism项目,我们正在使用'rspec'宝石来检查期望。这包含在我们的env.rb中,并在步骤定义中成功使用。
我现在正试图在SitePrism类中进行一些断言,但是我收到了错误。你知道如何使用那些expect()方法吗?
我在.rb文件中尝试使用require 'rspec'
加include Rspec
来定义SitePrism类,但我仍然遇到了同样的错误:
expect(local_value).to eq(@previous_value)
=> Error: NoMethodError: undefined method `expect' for #<xxx_Object @loaded=false>
谢谢!
答案 0 :(得分:2)
正如您已经发现的那样(根据您的评论),您可以在页面对象类中include RSpec::Matchers
获取expect
以及RSpec默认匹配器。其中一个匹配器名为all
,然后隐藏先前包含在对象中的Capybara :: DSL all
方法,并产生您正在看到的错误。解决这个问题的方法是在current_session对象(all
)或别名&quot; find_all&#39;上调用page
的Capybara版本。所以all(...).map(...)
变成了
page.all(...).map(...) # Same as Capybara.current_session.all(...)...
或
find_all(...).map(...) # or page.find_all ...
答案 1 :(得分:1)
旧问题,但提供了答案
值得一提的是,按照README说明进行操作。黄瓜将在黄瓜世界中加载RSpec测试功能。
取决于您与谁说话以及在哪里说话;最好(可以说)对黄瓜世界内部的功能执行所有基于RSpec的测试(即在step_definitions中)。
此外,这样做避免了您需要在任何地方包含这些项目,并且您将获得诸如expect(my_page.header_message.text).to eq('This')
您还可以使用其他任何方法,包括自动创建的capybara方法,这些方法将使用从类上的方法创建的隐式等待或rspec自动包含的方法