※ ChatGPTを利用し、要約された質問です(原文:テスト環境でのsaveについて)
テスト環境でのsaveについて
このQ&Aのポイント
テスト環境でのsaveコマンドを実行すると、newしたuserの内容ではなく、fixturesフォルダの下のテストデータの内容が書き込まれます。
YMLデータではなく、別のデータを書き込む方法はありますか?
モデルのpasswordセッターメソッドを再定義しているにもかかわらず、YMLデータが暗号化されずにそのまま入力されてしまいます。このメソッドの呼び出しは、テーブルの内容またはYMLデータの書き込み時に実行されるのでしょうか?
Ruby1.9.3とRails3.2.9でのテスト環境のモデルの単体テスト(unit)での質問です。
unitのuser_test.rb に下記の記述を書いて試験しているのですが、saveコマンドでのusersテーブル
への書き込みが、下記でnewしたuserの内容ではなく、fixturesフォルダの下の、users.ymlのテストデータの内容が書き込まれるようなのですが、動作はそれでよいのでしょうか?また、YMLデータではなくて下記のデータを書き込ませるsaveの書き方とかはあるのでしょうか?
test "user auth test" do
user = User.new(:name => "tanaka", :password => "pass", :password_confirmation => "pass")
user.save
assert User.auth("tanaka", "pass")
end
後、現在、usersテーブルのhashed_passwordフィールドに、モデル(user.rb)の中で、パスワードの
セッターを再定義するために、
class User < ActiveRecord::Base
def password=(pwd)
@password = pwd
#
return if pwd.blank?
self.hashed_password = User.encrypt(@password)
end
# 以下、省略
end
の記述を入れているのですが、現在何故か、YMLのデータが暗号化されないでそのまま入力されてしまっていますま。このメソッドの呼び出しは、上に書いたusersテーブルの内容またはYMLデータの書き込み時に、実行されると思っていいのでしょうか?(両方、またはどちらか?)
御教示願えればと思います。
お礼
情報ありがとうございます。 unitテストでのsaveの動作、理解できました。 データが暗号化されない件は解決致しました。 ありがとうございました。