NoMethodError:nil的未定义方法`check_url':NilClass

时间:2012-12-21 15:23:58

标签: ruby testing cucumber webdriver watir

我有一个模块,我已经包含在我的主要课程中:

module GenericPage

  def check_url=(page)
    puts(page)
  end

end

我创建了一个我的类的新实例,我在Cucumber中调用

require_relative '../../../support/helper_methods'


class FindYourDealerPage
  include GenericPage


  def initialize(browser)
    @browser = browser
  end

def search_location=(location)
  @browser.text_field(:id, 'findDealerSearchField').set(location)
  @browser.send_keys :tab, :enter
end

黄瓜:

    Given /^I am on the find your dealer page$/ do

    @browser.goto 'www.google.com'
    @dealer.check_url('www.google.com')
    @dealer = FindYourDealerPage.new(@browser)
    end

    When /^I select a desired preference$/ do

    end

    Then /^my filtered selection should be submitted$/ do

    end

当这个运行时,我得到一个错误NoMethodError: undefined method check_url'为nil:NilClass`我在哪里错了,忘记方法中的内容我想知道为什么我收到此错误< / p>

1 个答案:

答案 0 :(得分:5)

我认为这个问题就在这里

@dealer.check_url('www.google.com')
@dealer = FindYourDealerPage.new(@browser)

请注意在分配check_url之前致电@dealer的方式...意味着当您拨打方法时@dealer仍然是nil,这就是您获得NoMethodError的{​​{1}}。

此外,您目前有nil:NilClass,但是请致电def check_url=(page)。根据您在此处的意思,您需要将定义更改为check_url(page)或将调用更改为def check_url(page)(我怀疑前者更合适)。