这个错误方法是什么意思:nil:NilClass (NoMethodError) 的未定义方法"方法名称"



我对自动化测试相当陌生,我正在使用selenium-webdriver在Ruby中编写BDD自动化测试场景,在运行测试时,它们在第一步失败。(Tumblr仅作为一个例子(

此错误消息是什么意思,我该如何解决?任何帮助将不胜感激!

在我的功能文件中:

  Feature: tumblr 
    @s1
  Scenario: Logging in to Tumblr
    Given I am on the Tumblr login page
    When I enter my login details
    Then I should be sent to the dashboard

在我的login_page.rb中:

def visit
  @browser.goto "#{EnvConfig.base_url}/login"
  await_on_page
end

在我的login_step_defs.rb中:

Given /^I am on the Odicci login page$/ do 
  @app.tumblr_login.visit
end
When /^I enter my login details$/ do 
  @app.tumblr_login.login
end
Then /^I should be sent to the dashboard$/ do 
  @app.tumblr_dashboard.go_to_dashboard
end 
最初,当我运行"cucumber

features.feature"时,但找不到步骤定义,因此场景以"未定义"结束,因此运行"cucumber features.feature -r step_definitions可以运行测试,但由于以下错误消息,它们失败了:

Scenario: Logging in to Tumblr           # features.feature:4
Given I am on the Tumblr login page    # step_definitions/login_step_defs.rb:2
  undefined method `tumblr_login' for nil:NilClass (NoMethodError)
  ./step_definitions/login_step_defs.rb:3:in `/^I am on the Tumblr login page$/'
  features.feature:5:in `Given I am on the Tumblr login page'

@maxpleaner

if ENV['HEADLESS']
  require 'headless'
  require 'selenium-webdriver'
  headless = Headless.new display: '100'
  headless.start
end
# Set up browser
# browser = Watir::Browser.new (ENV['BROWSER'] || 'chrome').to_sym
 driver = Selenium::WebDriver.for :chrome
 browser_type = ENV['BROWSER'] || 'chrome'
 $setup_done = false

Before do |scenario|
    @browser = browser
    @app = App.new @browser
    unless $setup_done
    $setup_done = true
    # This stuff will only run before the first scenario executed. Use it to set up data etc.
    end
end
After do |scenario|
end
at_exit do
    browser.quit
end

最新更新