Хмммм, я думаю, что смогу помочь здесь.
При тестировании обратных вызовов вам нужно проверить два предположения:
Вызывается ли это для правильного события?Он делает то, что должен делать?
И помните, вы хотите убедиться, что ваши тесты охватывают один конкретный случай.
Ваши спецификации должны быть такими:
При сохранении статьи я ожидаю, что класс получит метод обратного вызова
При сохранении новой статьи я ожидаю, что количество элементов Page увеличится на один
При сохранении старой статьи яожидайте обновления существующей страницы
Вы можете продолжать уточнять, основываясь на типах статей и т. д.
Например,
it 'triggers a callback to create a page on save' do
expect(my_class_instance).to receive(:article_page_create)
@article.save
end
context 'when creating a new page' do
it "creates a new article" do
# expect number of pages to change by 1
end
end
context 'when updating an old page' do
it 'updates the corresponding article' do
# expect attribs to be correct for corresponding page
end
end