我有两个模型页面 文章。对于每个article
创建的page
,都会使用article
的属性创建。如下:
class Article
after_save :article_page_create
def article_page_create
site = Site.find_by(data_proxy_id: self.data_proxy_id)
page = Page.where(entity_id: self.id)
if page.blank?
if article_type == 'StaticPage'
Page.create(entity_id: self.id, url: "/static/#{self.url_part}", page_type: 'static_page')
else
Page.create(entity_id: self.id, url: self.url, page_type: 'article_page')
end
else
return page.update(url: self.url) unless article_type == 'StaticPage'
page.update(url: "/static/#{self.url_part}")
end
end
end
我是第一次尝试测试用例。到目前为止,这是我有多远。
article_spec.rb
require 'rails_helper'
RSpec.describe Article, type: :model do
context 'validation tests' do
it 'ensures article attrs presence' do
page = Page.create(entity_id: self.id, url: "/static/#{self.url_part}", page_type: 'static_page')
expect(page).to eq(true)
end
end
end
我只是想知道这是测试我的after_save
方法的方法。如果我错了,请纠正我。
答案 0 :(得分:0)
测试回调时,需要测试两个假设:
是否正在调用正确的事件? 它正在做它应该做的事情吗?
请记住,您要尝试确保您的测试涵盖一个特定情况。
您的规格应该是:
关于保存文章, 我希望该类能够收到回调方法
在保存新文章时, 我希望Page元素的数量增加一个
保存旧文章, 我希望现有页面能够更新
您可以根据文章类型等继续充实。
E.g。
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