/ / Cucumber NoMethodError ao executar o segundo cenário em um recurso - ruby, cucumber, watir

Pepino NoMethodError ao executar segundo cenário em um recurso - ruby, pepino, watir

Eu tenho um recurso simples de pepino com doiscenários. Ele usa watir-webdriver para efetuar login e logout básicos. O primeiro cenário (login) funciona bem e os métodos watir são executados sem problemas. Quando o segundo cenário é executado (por meio da execução do recurso como um todo), obtenho:

NoMethodError: método indefinido `wait_until" para nil: NilClass

Brincando com isso revelou que qualquer chamadapara métodos watir-webdriver no segundo cenário geram esse erro, enquanto os mesmos métodos funcionam no primeiro cenário. Presumo que tenho um problema de escopo e tentei "require" watir-webdriver "" nas definições de etapa do meu segundo cenário, sem sucesso. Incluí as definições de etapa para os dois cenários. Atualizei todas as minhas joias e tentei Cucumber 0.10.0 e 0.10.2 no Ruby 1.9.2.

Desculpe; Sou muito novo em rubi / pepino / watir e tentei resolver isso por algumas horas antes de postar. Muito obrigado por qualquer conselho!

require "watir-webdriver"

Given /^I have the proper credentials$/ do
@username = "matt"
@password = "abc123"
end
When /^I am on the login page$/ do
@browser = Watir::Browser.new(:firefox)
@browser.goto ("http://dev.example.net")
end
When /^I enter username and password$/ do
@browser.text_field(:class, /x-form-field x-form-text/).set @username
@browser.text_field(:index, 1).set @password
sleep 1
@browser.button(:text, "Login").click
end
Then /^I should should be granted access$/ do
@browser.wait_until { @browser.text.include? "Global Priorities" }
fail unless @browser.text.include? "Global Priorities"
end

Given /^I am currently logged in$/ do
@browser.wait_until { @browser.text.include? "Welcome: #{@username}" }
fail unless @browser.text.include? "Welcome: #{@username}"
end
When /^I click the Log Out button$/ do
@browser.button(:text, "Log Out").click
end
Then /^I should be logged out$/ do
pending
end

Respostas:

1 para resposta № 1

Matt, parece que você já entendeu.Sempre que você vir um erro em relação a um método indefinido para nil: NilClass - significa que tudo o que estava tentando usar esse método não existe mais para fazer as coisas com ele.

Isso pode significar que você está usando o tipo errado devariável (instância / classe / global) para seu objeto de navegador, ou que você definiu este navegador em algum lugar que não está sendo acessado durante a segunda execução.