2009-01-31 3 views
3

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

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

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

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

+0

Что делает «calculate_hashed_password»? Создает хешированную версию атрибута «пароль»? –

+0

Да, это так. – Ethan

ответ

8

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

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 

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

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

5

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

it "should know about associated Projects" do 
    @user.should respond_to(:projects) 
end 
+0

Я тоже это делаю, просто как простая проверка здравомыслия, что я помещал линию ассоциации в класс модели. – Otto

Смежные вопросы