be_true rspec找不到nameerror

时间:2013-01-02 15:03:44

标签: ruby rspec

我的rspec和页面对象有问题。我有

 cell(:balance_type_tab_element, :id => 'a')

然后是我的行

def check_all
  check_navigation_to_and_from_balance_page
  check_printer_friendly_link
end

然后我也有

def check_allocation_by_balance_type
  balance_type_tab?
  puts "found tab"
  puts balance_type_tab_element.visible?
  balance_type_tab_element.visible?.should be_true
end

def check_navigation_to_and_from_balance_page
  //some other checks
  check_allocation_by_balance_type
end

然后在一个步骤文件

on_page(ParticipantBalanceDetailsPage).check_all

但我不断收到错误NameError:undefined local variable或method`be_true'

我尝试使用谷歌搜索但到目前为止没有运气,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:6)

各种匹配器方法不会在每个上下文中自动提供。请注意,当您致电be_true时,您正在向be_true发送self条消息。为了使所有匹配器在每个上下文中都可用,RSpec必须将所有匹配器对象添加到系统中的每个对象,这将是一个糟糕的想法。

要在此上下文中使匹配器可用,您只需将RSpec::Matchers混合到您的班级中:

class MyPageObject
  include RSpec::Matchers

  def check_allocation_by_balance_type
    balance_type_tab?
    puts "found tab"
    puts balance_type_tab_element.visible?
    balance_type_tab_element.visible?.should be_true
  end
end