У меня есть новостная лента на основе redis, в которую вставляются элементы с помощью обратных вызовов, когда происходят определенные события. Например, когда пользователь делает заметку о книге, она вставляется в новостные ленты читателей книги.
class Note < ActiveRecord::Base
after_save do |note|
notify_the note.book.readers
end
...
end
Теперь это нормально, и я на 99% уверен, что это работает, так как я могу посмотреть свой канал и увидеть там заметки. Моя проблема в том, чтобы протестировать его на Rails 3 с последними rspec-rails.
По какой-то причине это проходит:
spec/models/note_spec.rb
describe "note creation" do
it "should notify the readers of the book the note is on" do
@user.feed.count.should == 0
@note.save!
@user.feed.count.should == 1
end
end
Но это не так:
spec/models/note_spec.rb
describe "note creation" do
it "should notify the readers of the book the note is on" do
lambda do
@note.save!
end.should change(@user.feed, :count).by(1)
end
end
и я не могу понять, в чем разница?