2016-07-01 4 views
3

Railsで特定のタイプのユニットテストにmocha mockingライブラリを使用する方法を理解するのに苦労しています。mochaを使ってRailsコントローラでクラスをモックする方法

私は、ヘルパーライブラリからオブジェクトを初期化し、その上で関数を呼び出すコントローラを持っています。私のコードは、私がget_objects()メソッドが呼び出されたことを確認するために、アダプタを模擬したい、私のテストでは

class ObjectsController < ApplicationController 
    before_action :set_adapter 

    def index 
    response = @adapter.get_objects 

    render json: response 
    end 

    private 
    def set_adapter 
     arg = request.headers["X-ARG"] 
     @adapter = Adapter::Adapter.new(arg) 
    end 
end 

に似ています。私はこの種のテストを実装する最良の方法が何であるかを考えようとしていますが、クラス内の既存のオブジェクトをモックする方法についてのアイデアを得ることに固執しているようです。

誰でもお手伝いできますか?

答えて

2

あなたはこのようにそれをスタブできます

adapters = mock('object') 
adapters.expects(:get_objects) 
Adapter::Adapter.expects(:new).with('<X-ARG-HEADER-HERE>').returns(adapters) 
# Run rest of test here to trigger calling the index method 

はそれがお役に立てば幸いです。

+0

動作しているようですが、モック関数呼び出しの 'オブジェクト'はどういう意味ですか? –

+0

これは、一般的なルビーベースオブジェクトを嘲笑しているということです。あなたはどんなクラスでもこのようにモックできます。 –

関連する問題