【问题标题】:Could an object reinitialize itself before a method is executed?对象可以在方法执行之前重新初始化自己吗?
【发布时间】:2012-08-30 17:37:32
【问题描述】:

我可以让一个对象在方法执行之前重新初始化自己吗?我正在使用 Ruby 和 selenium 来测试一个 Web 应用程序,并且我正在尝试改进我的页面对象。例如

class Foo

  def initialize
    #stuff happens here 
  end

  def NewMethod
    self.initialize
    #What happens here is what I really want to happen 
  end 

end 

这是一个好主意还是坏主意?或者有更好的方法吗?

【问题讨论】:

  • 请通过提供更多详细信息来改进您的问题,不清楚这里要问什么。
  • 我正在尝试计划如何让我的页面对象负责页面上的内容,而不是检查测试用例中的内容。我在这里尝试制定的是一种制作导航栏页面对象的策略。我想我现在倾向于让所有具有导航栏的页面对象都继承自导航栏类。

标签: ruby automated-tests pageobjects


【解决方案1】:

始终可以更改对象中包含的数据。您可以将所有初始化逻辑放入一个附加方法中,然后从您的自定义方法中调用它。

一般来说,您尝试做的事情听起来不是一个好主意...

【讨论】:

    【解决方案2】:

    提前说明:方法都是小写的。请将NewMethod 替换为newmethod

    如果你尝试Foo.newmethod,你会得到一个错误。

    你想做什么?您想定义创建对象的不同可能性吗?

    你能做什么:

    class Foo
      def initialize
      end
    
      def self.newmethod
        me = self.new
        #Some actions ...
        me #Return the (modified?) object
      end 
    
    end 
    
    p Foo.newmethod #->#<Foo:0xb77d58>
    

    Time 正在使用类似的东西。有Time.newTime.gmTime.local...

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 2017-11-05
      • 2011-12-05
      • 1970-01-01
      • 2016-02-10
      相关资源
      最近更新 更多