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

use*_*703 2 ruby testing webdriver watir cucumber

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

module GenericPage

  def check_url=(page)
    puts(page)
  end

end
Run Code Online (Sandbox Code Playgroud)

我创建了一个我的类的新实例,我在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
Run Code Online (Sandbox Code Playgroud)

黄瓜:

    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
Run Code Online (Sandbox Code Playgroud)

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

And*_*nes 5

我想这个问题就在这里

@dealer.check_url('www.google.com')
@dealer = FindYourDealerPage.new(@browser)
Run Code Online (Sandbox Code Playgroud)

注意你check_url在分配之前如何调用@dealer...意味着你在进行方法调用时@dealer仍然是这样nil,这就是你获得NoMethodErrorfor 的原因nil:NilClass.

此外,你现在有def check_url=(page),但你打电话check_url(page).根据您在此处的意思,您需要更改定义def check_url(page)或更改呼叫@dealer.check_url = 'www.google.com'(我怀疑前者更合适).