基本的なmock_modelオブジェクトにモジュールを含めて、モジュールを指定しようとしています。ただし、モジュールで定義されたインスタンスメソッドを呼び出すと、ActiveRecordはデータベースとの接続を確立しようとします。
モジュール:
module Stuff
module SoftDelete
extend ActiveSupport::Concern
def soft_delete
puts "Called here"
end
end
end
仕様:
describe Stuff::SoftDelete do
class Network < ActiveRecord::Base
include Stuff::SoftDelete
attr_accessor :deleted_at
end
before (:each) do
@network = mock_model(Network)
end
context "When a record is deleted" do
it "is marked as deleted" do
@network.soft_delete
end
end
end
この仕様を実行すると、次のエラーが発生します。
1) Stuff::SoftDelete When a record is deleted is marked as deleted
Failure/Error: @network.soft_delete
ActiveRecord::ConnectionNotEstablished:
ActiveRecord::ConnectionNotEstablished
# ./spec/apoc/soft_delete_spec.rb:18:in `block (3 levels) in <top (required)>'
注:SoftDeleteモジュールを実際のActiveRecordクラスに含めると、機能します。mock_modelがモジュールを処理できないようです。
これについての助けが欲しいです。ありがとう!