2017-04-13 6 views
0

Ich arbeite in einem Gurken-Ruby-Framework und wir verwenden Capybara und SitePrism, um den Browser zu fahren.Ist es möglich, "Schritte" innerhalb von SitePrism-Seiten zu verwenden?

Ich habe eine Situation, wo ich ein paar Schritte wiederholen wollen, wenn ein Fehler passiert, so dass ich eine Methode mit Logik setzen diese Seite innerhalb eines SitePrism abzudecken, wie folgt:

steps %Q{ 
When I click on the back button 
And I enter my reference number 
Then I am able to complete the action successfully 
} 

Die Problem ich finde, ist, dass, wenn dieser Teil des Codes erreicht wird, schlägt die Ausführung mit:

undefined method `steps' for #<MySitePrismPage:0x000000063be5b0 @loaded=false> (NoMethodError) 

Jede Idee, wenn es eine Möglichkeit für mich, innerhalb SitePrism Seiten Schritte zu benutzen?

Danke!

+0

Ich dachte, es ist ein Problem mit SitePrism Seiten war, aber ich habe gerade mit einer Standardklasse oder gar einem Modul versucht und ich bekomme immer wieder das gleiche Problem über 'undefinierte Methodenschritte'. Wenn jemand einen Vorschlag hat, dass ich pls versuchen könnte? – mickael

Antwort

0

Kredit an 'Jonas Maturana Larsen' in einer google group. Ein ähnliches Problem mit einem anderen Beispiel, aber die "Welt" an die Klasse zu übergeben, hat das Problem auch für mich behoben.

Schritt ist definiert in Gurken RbWorld Modul.

Sie müssen die Weltinstanz von wo immer Sie erstellen die TestRubyCallStep-Klasse übergeben.

In Ihrem Fall möchten Sie möglicherweise ein Modul anstelle einer Klasse machen, wenn Sie nur einen Platz benötigen, um gemeinsame Methoden zu behalten.

class TestRubyCallStep 
    include Calabash::Android::Operations 

    def initialize(world) 
     @world = world 
    end 

    def callMethod 
     @world.step %Q{my customized steps in custom_step.rb} 
    end 
end  

Der Kontext, in dem der Schrittdefinition ausgeführt wird, ist die Welt :)

Versuchen Sie folgendes:

Then /^I call a step from Ruby class "([^\"]*)"$/ do |world| 
    testObj = TestRubyCallStep.new(self) 
    testObj.callMethod 
end 
Verwandte Themen