Как вызвать метод суперкласса в MiniTest - PullRequest
0 голосов
/ 19 октября 2018

Я пишу тест в MiniTest для приложения, которое использует Devise, и у меня есть небольшая (я надеюсь) проблема.

Я хочу проверить, правильный ли пароль пользователя.Есть метод valid_password?(password), вызываемый для конкретного пользователя, который делает то, что мне нужно.

НО моя проблема в том, что в этом приложении этот метод перезаписывается таким образом:

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

Есть лилюбая возможность использовать valid_password?от super (разработка) в модульных тестах?

Заранее спасибо за любую помощь.Marta

1 Ответ

0 голосов
/ 19 октября 2018

Есть несколько «хакерских» способов, которыми вы могли бы достичь этого, но правильный ™ способ сделать это состоит в том, чтобы структурировать ваш тест таким образом, чтобы condition было ложным.Способ сделать это, конечно, зависит от того, как определяется condition!

Например, , предположим, что метод реализован как:

def condition(password)
  password.length < 10
end

Вв этом случае вы должны просто запустить тест с длинным паролем.

Вы могли бы также (в крайнем случае) заглушить метод condition для возврата false - но это плохая практика,Тогда ваш тест не будет отражением реальности, поскольку фактические обстоятельства, при которых выполняется super, могут не выполняться.

...