我正在使用watir-cucumber进行测试自动化。我在单独的.rb
中编写了以下方法,此方法不在步骤定义中。
def has_logged_in?
$browser.text.should include("t788")
end
当我从步骤定义中调用此方法时,会出现此错误,
wrong argument type String (expected Module) (TypeError)
相同的代码在步骤定义中正常工作。我四处搜索,发现include
方法用于包含模块,但这是ruby-include
方法,should include
来自rspec\expectations
。那么如何像上面那样在步骤定义之外调用should include
方法。
我在linux上使用watir-cucumber
答案 0 :(得分:5)
您需要的include
方法位于RSpec::Matchers
模块中。
如果您的has_logged_in?
方法属于某个类(不属于main),则可以在类中包含RSpec :: Matchers模块。这样您就可以访问include
方法。
所以你的课程看起来像是:
class YourClass
include RSpec::Matchers
def has_logged_in?
$browser.text.should include("t788")
end
end
注意:我之前没有必要这样做,但是从快速检查来看,只要RSpec :: Matchers包含在类而不是主类中,它就能正常工作。在主要包括它似乎没有做任何事情(即包括继续调用标准包括模块方法)。我没有探究是否有任何负面影响。
答案 1 :(得分:0)
在你的宝石文件中:
gem 'rspec', "1.3.2", :require => "spec/expectations"
或者在你的env.rb中为RSpec 1.X.X:
require 'spec/expectations'
或者在你的env.rb中为RSpec 2.X:
require 'rspec/expectations'