私人方法问题

时间:2017-05-23 10:41:05

标签: ios ruby cordova cucumber appium

我遇到私有方法功能方面的问题。

这是我的示例env.rb文件

require 'rspec/expectations'
require 'selenium-webdriver'

#APP_PATH = 'PlainNote.app'

def capabilities
  {
      'automationName' => 'XCUITest',
      'platformName' => 'iOS',
      'deviceName' =>  'iPhone Simulator',
      'platform' => 'Mac',
      'version' => '9.2',
      'app' => '/Users/shafiq.malik/Documents/Projects/nuff-class-booking-mobile/platforms/ios/build/emulator/HelloCordova.app'}
end

#def absolute_app_path
#  File.join(File.dirname(__FILE__), APP_PATH)
#end

def server_url
  "http://localhost:8000/index.html"
end

def selenium
  @driver ||= Selenium::WebDriver.for(:remote, :desired_capabilities => 
  capabilities, :url => server_url)
end

After { @driver.quit }

但是我收到以下错误消息

Given I load the hello world app                                 # features/step_definitions/hello_world.rb:1
  private method `capabilities' called for #<Hash:0x007fb9b07c7da8> (NoMethodError)
  ./features/support/env.rb:25:in `selenium'

我完全不熟悉移动测试。所以它可能是一个非常直接的解决方案。有人可以好心地告诉我哪里出错了。

1 个答案:

答案 0 :(得分:0)

在这种情况下,您不应使用capabilities作为方法名称。 也许它在Kernel或其他任何地方定义。

有时,当我们根据需要使用一些保留名称时,可能会发生这种情况。您可以在定义之前通过p method(:capabilities)检查该方法的来源。