2017-04-13 85 views
0

我在黄瓜Ruby框架工作,我们使用水豚和SitePrism驱动器。是否可以使用SitePrism页面内的“步骤”?

我有,我想如果有错误发生重试了一堆步骤的情况,所以我把方法与逻辑的SitePrism页面内覆盖此如下:

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

的问题我发现的是,达到这部分代码时,执行失败:

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

,如果有一种方式,我用SitePrism页中的步骤的任何想法?

谢谢!

+0

我以为是SitePrism页面的问题,但我我刚刚尝试过一个标准的类,甚至是一个模块,我一直在关注'未定义的方法步骤'。如果有人有建议我可以试用吗? – mickael

回答

0

感谢“乔纳斯马图拉纳拉尔森在google group。一个不同的例子也有类似的问题,但是将“世界”传递给这个类也为我解决了这个问题。

步骤在Cucumbers RbWorld模块中定义。

您需要从创建 TestRubyCallStep类的位置传递世界实例。

在你的情况,你可能真的想使一个模块,而不是 类,如果你只需要一个地方来保存共享的方法。

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  

其中步骤定义执行的背景是世界:)

试试这个:

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