3

メソッドを実装したいと思いUser.calculate_hashed_passwordます。Railsの組み込みテストツールで動作するShouldaテストライブラリを使用しようとしているので、Test::Unitに関連する答えはShouldaに関連するものと同じくらい良いでしょう(私は思います)。

何をテストする必要があり、どのようにテストする必要があるかを理解しようとしています。私の最初のアイデアは、次のようなことをすることです...

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

これは正しい方法ですか?

4

4 に答える 4

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を使用しないので、明白な構文エラーを許してください。)

メソッドが存在しない場合、そのテストは失敗します。

于 2009-01-31T00:42:15.863 に答える
3

多分使用respond_to?

于 2009-01-31T00:33:31.760 に答える
0

Object#respond_to?を確認してください。新しいバージョンの Rails では Object#try を使用します一般的なテストに慣れていない場合は、Rails でのテストに関するこの優れたガイドを必ずお読みください。

于 2009-02-03T21:01:37.600 に答える