Rspec/FactoryGirl: 工厂中的更改没有保存在测试数据库中?

Rspec/FactoryGirl: changes in factory not saving in test database?

我为模型定义了以下工厂:

factory :page do
  association :user, factory: :standard_user
  association :post, factory: [:short_post]
  after :create do |model|
    model.post.user = model.user
    model.save!
  end
end

创建后的块似乎 运行 文件和工厂 returns 具有 correct/new 更改的模型对象但是这不会在我的测试数据库中持续存在。

即。如果我从我的测试中调用 Page.last.post.user.id,我仍然会得到旧用户 ID,它在 after create 块之前分配给 post 对象工厂。我不确定为什么会这样。

您的 after :create 回调实际上应该更新 post 对象,但是,您在 page 对象上调用 save!

尝试调用 model.post.save! 直接保存 post 上的 user_id 列。