В чем разница между этими двумя тестами, вызывающими один провал и один для прохождения? - PullRequest
1 голос
/ 15 сентября 2011

У меня есть два следующих теста для приложения Rails, над которым я работаю.

Этот сбой:

test "should save comment without parent comment" do
  comment = Comment.new(:text => "hello world")
  comment.user = users(:charlie)
  comment.story = stories(:one)
  assert comment.save
end

И этот проходит:

test "should save comment without parent comment" do
  comment = Comment.new(:text => "hello world")
  comment.user = users(:charlie)
  comment.story = stories(:one)

  comment.save

  assert comment.save
end

Когда я изменяю строку подтверждения в первом (неудачном) тесте на это:

assert comment.save, Proc.new { "#{comment.errors.messages.inspect} -- valid? #{comment.valid?} -- save? #{comment.save}" }

Распечатывает это как сообщение об ошибке:

{} -- valid? true -- save? true

Я в полном недоумении, почему моей модели Comment требуется два вызова save. Он отлично работает в моем контроллере с одним вызовом save.

У меня есть after_create обратный вызов, но я не думаю, что это должно влиять на что-либо (как я уже сказал, все это прекрасно работает с моего контроллера):

after_create :create_upvote_from_user
def create_upvote_from_user
  Vote.create! :user => user, :vote => 1, "#{self.class.name.underscore}_id" => id
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...