如何在MiniTest中调用超类方法

时间:2018-10-19 15:45:50

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

我正在使用Miniise在使用Devise的应用程序中编写测试,但我有一个小问题(我希望)。

我想检查用户密码是否正确。有办法 valid_password?(password)拜访了需要我做的特定用户。

但是我的问题是,在此应用中,该方法被这种方式覆盖:

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

是否有可能使用有效密码?来自super(Devise)的单元测试?

在此先感谢您的帮助。 玛塔

1 个答案:

答案 0 :(得分:1)

您可以通过某些“ hacky”方式来实现此目的,但是 right ™的方式是将测试构造为condition为假。当然,执行此操作的方式取决于condition的定义方式!

例如,假设该方法实现为:

def condition(password)
  password.length < 10
end

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

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