ActiveRecord test objects made easy
If you're testing a ActiveRecord model mixin in your application, you might be tempted to unit test it in the context of one of your app's models. However, that would violate your test isolation and introduce complexities related to the behavior of the model.
Better solution is to make an Active Record class just for your test, and the fact that you can invoke schema definitions on the fly makes it super easy. Here's the top of one of my specs, illustrating the technique.
require 'rails_helper'
ActiveRecord::Schema.define do
create_table :test_objects, force: true do |t|
t.jsonb :jobs, null: false, default: {}
end
end
class TestObject < ApplicationRecord
include WorkerRegistry
end
RSpec.describe WorkerRegistry do
let(:test_object) { TestObject.create }
...