Как протестировать обратные вызовы ActiveRecord с RSpec?

Как протестировать следующий пример?

class Post < ActiveRecord::Base
  belongs_to :discussion, touch: true
end
15
задан Joshua Pinter 11 December 2014 в 03:20
поделиться

2 ответа

Вы можете установить ожидаемое сообщение :

it "should touch the discussion" do
  post = Factory.build(:post)
  post.discussion.should_receive(:touch)
  post.save!
end

В этом примере используется Factory Girl , но вы также можете использовать фикстуры или макеты.

15
ответ дан 1 December 2019 в 02:55
поделиться

Вы можете имитировать вызов #touch или проверить влияние вашего обратного вызова на него.

it "should touch the discussion" do
  original_updated_at = @discussion.updated_at
  @post.save!
  @post.discussion.updated_at.should_not_be == original_updated_at
end
1
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: