2017-02-15 31 views
0

我有一个黄瓜,红宝石,siteprism项目,我们使用'rspec'gem来检查期望值。这包含在我们的env.rb中,并成功用于步骤定义。NoMethodError:尝试在SitePrism类中使用它时发现未定义的方法'expect'

我现在试图在SitePrism类中做一些断言,但是我收到一个错误。你知道我可以如何使用这些expect()方法吗? 我试着用require 'rspec'加在其中定义SitePrism类的.rb文件include Rspec,但我得到了同样的错误依然:

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

谢谢!

+0

我列入'包含的RSpec ::匹配器'在类这似乎传递'expect'错误消息。然而,我又得到了另一个相关的,有没有解决这个错误的建议,或者以不同的方式包含'expect'? NoMethodError:未定义的方法'map'for# 您的意思是?点击 – mickael

回答

1

正如你发现(从你的评论)你可以在你的页面对象类include RSpec::Matchers得到expect与RSpecs默认匹配。其中一个匹配器名为all,然后将以前包含在该对象中的Capybara :: DSL all方法遮蔽起来,并产生您所看到的错误。解决该问题的方法是在current_session对象(page)或别名'find_all'上调用水豚版本all。所以all(...).map(...)成为

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

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

这与您帮助我关于SitePrism的其他问题有关。 http://stackoverflow.com/questions/42236583/is-it-possible-to-use-siteprism-variables-to-define-new-variables-when-defining/42237203#42237203 我只是调用一个siteprism方法没有自己打电话给水豚。你知道这是否可以以不同的方式绕过这个问题? – mickael

+0

@mickael'all'不是site_prism方法,它是一个capybara方法,site_prism包含在页面对象类中。如果你说你的代码不是调用'all',而是site_prism中的某个地方,那么你需要使用site_prism的master分支来运行。去年有一个修复合并,修复它 - https://github.com/natritmeyer/site_prism/pull/162 –

+0

我看,是的,似乎site_prism它调用它时,部分工作。但还有一个基本的疑问。我已经安装了gem版本2.9,并检查rubygems.org,这似乎是最新的。如果没有正式发布,你有关于如何将我的版本升级到master分支的链接? (据我猜想,我可以在本地覆盖一些文件,但该框架也被团队中的其他人使用)? – mickael

相关问题