Я пытаюсь проверить метод set_random_token видно ниже из моей моделиRspec тестирование before_create крюк
class Invitation < ActiveRecord::Base
has_and_belongs_to_many :users
validates :name, presence: true, uniqueness: true
validates :number_of_uses, presence: true, numericality: true
validates :token, presence: true, uniqueness: true, format: /\A[0-9A-F]+\z/i
before_create :set_random_token
private
def set_random_token
random_hex = SecureRandom.hex(8)
self.token = random_hex
end
end
Вот часть в моем invitation_spec
it 'verifies that the token is set' do
@invitation = Invitation.new
@invitation.save
expect(@invitation.token).not_to be_empty
end
А вот ошибка я m получение
2) Invitation verifies that the token is set
Failure/Error: expect(@invitation.token).not_to be_empty
expected to respond to `empty?`
# ./spec/models/invitation_spec.rb:37:in `block (2 levels) in <top (required)>'
Я довольно новичок в Rails, поэтому извиняюсь, если ответ предельно очевиден.
Я подозреваю, что вы ударяя ошибка проверки, прежде чем вы получите, насколько экономии. Используйте 'save!' Вместо 'save', чтобы узнать, так ли это. –