6 Stimmen

Stackebene zu tief (SystemStackError)

Ich habe Sinatra Anwendung und müssen meine Anwendung zu testen.

features/support/env.rb:

require_relative "../../application"

require "capybara"
require "capybara/cucumber"
require "rspec"

World do
  Capybara.app = Application

  include Capybara::DSL
  include RSpec::Matchers
end

features/one.feature:

Feature: Test homepage
  In order to make sure people can open my site
  I want to check it opened

  Scenario: Opening first page
    Given I have opened homepage    
    Then I should see site header

Testen Sie es:

cucumber features\one.feature

Ergebnis:

Feature: Test homepage
  In order to make sure people can open my site
  I want to check it opened

  Scenario: Opening first page    # features\one.feature:5
    Given I have opened homepage  # features\one.feature:6
    Then I should see site header # features\one.feature:7

1 scenario (1 undefined)
2 steps (2 undefined)
0m0.006s

You can implement step definitions for undefined steps with these snippets:

Given /^I have opened homepage$/ do
  pending # express the regexp above with the code you wish you had
end

Then /^I should see site header$/ do
  pending # express the regexp above with the code you wish you had
end

Nun, ich habe eine features/step_definitions/agenda_steps.rb:

Given /^I have opened homepage$/ do
  pending # express the regexp above with the code you wish you had
end

Then /^I should see site header$/ do
  pending # express the regexp above with the code you wish you had
end

Testen Sie es:

cucumber features\one.feature

Ergebnis:

Feature: Test homepage
  In order to make sure people can open my site
  I want to check it opened

  Scenario: Opening first page    # features\one.feature:5
    Given I have opened homepage  # features/step_definitions/agenda_steps.rb:1
C:/Ruby193/bin/cucumber:19: stack level too deep (SystemStackError)

Warum und wie kann ich das beheben?

Aktualisiert: Das Problem ist verschwunden, wenn ich meine env.rb wie folgt umschreibe:

require_relative "../../application"

require "capybara"
require "capybara/cucumber"
require "rspec"

Capybara.app = Application
#World do
#  Capybara.app = Application
# 
#  include Capybara::DSL
#  include RSpec::Matchers
#end

1voto

Milind Punkte 4281

Ich habe den gleichen Fehler erhalten wie

stack level too deep (SystemStackError)
/usr/local/rvm/gems/ruby-1.9.2-p290/gems/cucumber-1.1.4/lib/cucumber/core_ext/instance_exec.rb:73..

i hinzugefügt require 'cucumber/rails' en erste Zeile von env.rb ...die zuerst geladen werden.

Jetzt habe ich diesen Fehler nicht mehr.

0voto

sashaegorov Punkte 1821

Ich glaube, dass nur Capybara.app = Application sollte nicht innerhalb von World wie in Ihrem Beispiel gezeigt.

So funktioniert meine env.rb :

ENV['RACK_ENV'] = 'test'
require File.join(File.dirname(__FILE__), '..', '..', 'rvs.rb')

require 'capybara'
require 'capybara/cucumber'
require 'rspec'
require 'r18n-core'

Capybara.app = RVS

class RVSWorld
  include R18n::Helpers
  include Capybara::DSL
  include RSpec::Expectations
  include RSpec::Matchers
end

World do
  RVSWorld.new
end

Wie Sie sehen können, enthält die Klasse RVSWorld nur Anweisungen, die die notwendigen Module enthalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X