2012-05-01 6 views
2

私は、モジュールを基本的なmock_modelオブジェクトに含めることによってモジュールを仕様しようとしています。しかし、モジュールで定義されたインスタンスメソッドを呼び出すと、ActiveRecordはデータベースとの接続を確立しようとします。RSpec mocked_modelにActiveSupport :: Concernを正しく組み込みテストするにはどうすればよいですか?

モジュール:

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)>' 

:私が含まれている場合実際のActiveRecordクラスのSoftDeleteモジュールで動作します。 mock_modelはモジュールを扱うことができないようです。

このページでいくつかの助けがありますか? ありがとう!

答えて

0

あなたはActiveRecordを信頼しますか?もしそうなら、それを継承しないでください。モジュールを単独でテストしてください。モジュールにActiveRecordメソッドが含まれている場合は、それらをスタブしてコードのみをテストします。

関連する問題