1

私はHartl Chにいます。8 Rails チュートリアルと私のテスト「remember token」が失敗しました。エラーメッセージ

User remember token
Failure/Error: it { @user.remember_token.should_not be_blank}
expected black? to return false, got true

テストコード

 describe "remember token" do
    before { @user.save }
    it { @user.remember_token.should_not be_blank }
    end

モデル法

  def create_remember_token
    self.remember_token = SecureRandom.urlsafe_base64
    end

うまくいかない理由はありますか?ありがとう。

4

2 に答える 2

3

モデルの残りの部分をどのようにセットアップするかを知らずに、またはこれが 1 回のみまたは各保存時に発生する場合、デザインが変更される可能性があります。を呼び出すフックの設定方法によって異なりますcreate_remember_token

トークンが存在することを常に確認したい場合は、保存する前に次のように強制できます。

class User < ActiveRecord::Base
  before_save :create_remember_token

  # Rest of code

  def create_remember_token
    # Only create this if it doesn't already exist
    self.remember_token = SecureRandom.urlsafe_base64 unless remember_token
  end
end

より正確なテストを行うには、次を使用します。

describe User do

  subject(:user) { User.new } # Omitting required attributes

  context "on saving" do
    it do
      SecureRandom.stub(urlsafe_base64: "test_token")

      expect{user.save}.to change{user.remember_token}.from(nil).to("test_token")
    end
  end

end
于 2013-04-30T15:42:21.287 に答える