Rails 开发中的模型验证与页面创建实践
1. RSpec 的 “subject” 变量
在使用 RSpec 进行测试时,每个单独的 spec 文件都有一个名为 “subject” 的“神奇”变量。这个变量会根据 spec 文件的名称和类型自动设置。在测试 Page 模型时,隐含的 subject 变量会被设置为一个新的 Page 实例。shoulda - matchers 会使用 RSpec 的隐含 subject 变量来执行验证。
不过,默认情况下,RSpec 构建的 Page 实例没有 user_id 字段。为了解决这个问题,可以在 spec 文件中指定自定义的 subject,有以下几种方式:
- 在 describe 块内指定:
describe 'validations' do
subject { build(:page) }
it { is_expected.to belong_to(:user) }
it { is_expected.to validate_presence_of(:title) }
it { is_expected.to validate_uniqueness_of(:title) }
it { is_expected.to validate_presence_of(:content) }
end
- 重用顶部构建的 page:
subject { page }
- 推荐在
超级会员免费看
订阅专栏 解锁全文
29

被折叠的 条评论
为什么被折叠?



