1

テストしようとすると、ログイン後に(authlogicを使用して)新しいユーザーが正常に作成されます。ユーザーにいくつかの新しいフィールドを追加したので、ユーザーが正しく保存されていることを確認したいだけです。

問題は、有効なユーザーファクトリを作成しているにもかかわらず、その属性を取得してcreateメソッドに投稿しようとすると、パスワードとパスワードの確認が省略されることです。これは、authlogicがバックグラウンドで実行するセキュリティメソッドであると思います。これにより、検証が失敗し、テストが失敗します。

どうすればこの問題を回避できますか?手で属性を入力することもできますが、それはあまり乾燥していないようです。

 context "on POST to :create" do
            context "on posting a valid user" do
                setup do
                    @user = Factory.build(:user)
                    post :create, :user => @user.attributes
                end
                should "be valid" do
                    assert @user.valid?
                end
                should_redirect_to("users sentences index page") { sentences_path() }
                should "add user to the db" do
                    assert User.find_by_username(@user.username)
                end
            end


##User factory
Factory.define :user do |f|
  f.username {Factory.next(:username) }
  f.email { Factory.next(:email)}
  f.password_confirmation  "password"
  f.password "password"
  f.native_language {|nl| nl.association(:language)}
  f.second_language {|nl| nl.association(:language)}
end
4

1 に答える 1

2

Userオブジェクトからpasswordとpassword_confirmationを読み取ることはできません。:password:password_confirmation@user.attributesハッシュにマージする必要があります。そのハッシュを他のファクトリ定義と共通の場所に保存する場合、それはそれほど乾燥しているわけではありませんが、テストにハードコーディングするよりはましです。

于 2010-04-10T12:27:24.510 に答える