Как вы проверяете, есть ли у модели данный метод в Rails? - PullRequest
3 голосов
/ 31 января 2009

Я бы хотел реализовать метод User.calculate_hashed_password. Я пытаюсь использовать библиотеку тестирования Shoulda, которая работает со встроенными инструментами тестирования Rails, поэтому ответ, связанный с Test :: Unit, будет таким же хорошим, как и ответ, связанный с Shoulda (я думаю).

Я пытаюсь выяснить что мне нужно проверить и как я должен проверить это. Моя первоначальная идея - сделать что-то вроде ...

class UserTest < ActiveSupport::TestCase
  should 'Return a hashed password'
    assert_not_nil User.calculate_hashed_password
  end
end

Это правильный способ сделать это?

Ответы [ 4 ]

8 голосов
/ 31 января 2009

Вам не нужно проверять, что метод существует, просто метод работает правильно. Скажите что-то вроде этого:

class UserTest < ActiveSupport::TestCase
  setup do
    @user = User.new
  end

  should 'Calculate the hashed password correctly'
    @user.password = "password"
    @user.hashed_password = "xxxxx" # Manually calculate it
  end
end

(я не использую musta, поэтому извините за любые явные синтаксические ошибки.)

Этот тест не пройден, если метод не существует.

5 голосов
/ 31 января 2009

Я согласен с Отто; но, как заметил dylanfm, я использую #respond_to для проверки ассоциаций в RSpec.

it "should know about associated Projects" do
  @user.should respond_to(:projects)
end
3 голосов
/ 31 января 2009

Может использовать respond_to?

0 голосов
/ 04 февраля 2009

Вы должны проверить Object # response_to? и Object # try в более новых версиях Rails. Если вы новичок в тестировании в целом, обязательно прочитайте это отличное руководство по тестированию в Rails .

...