【问题标题】:How to call superclass method in MiniTestMiniTest中如何调用超类方法
【发布时间】:2018-10-19 15:45:50
【问题描述】:

我正在使用MiniTest 为使用Devise 的应用程序编写一个测试,但我遇到了一点(我希望是)问题。

我想检查用户的密码是否正确。有一种方法 valid_password?(password) 调用了执行我需要的特定用户。

但我的问题是,在这个应用程序中,这个方法以这种方式被覆盖:

def valid_password?(password)
  if condition
    # some else code 
  else 
    super
  end
end

有没有可能使用valid_password?来自单元测试中的super(设计)?

提前感谢您的帮助。

【问题讨论】:

    标签: ruby ruby-on-rails-4 devise minitest


    【解决方案1】:

    有一些“hacky”方法可以实现此目的,但正确的™ 方法是构建您的测试,使condition 是错误的。当然,如何做到这一点取决于condition 是如何定义的!

    例如,假设方法实现为:

    def condition(password)
      password.length < 10
    end
    

    在这种情况下,您只需使用长密码运行测试即可。

    可以也(作为最后的手段)存根 condition 方法以返回 false - 但这是不好的做法。您的测试将不会反映现实,因为可能无法满足执行 super 的实际情况。

    【讨论】:

      猜你喜欢
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2011-03-28
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多