2012-04-10 22 views
1

私は、グラフデシベルとしてのNeo4j使用シナトラアプリを持っています。 アプリはネストを介してRESTクライアントとしてdbにアクセスします。sinatraでテストするためのモックデータベースを設定するにはどうすればよいですか?

私はRSpecのを使用して、テスト目的のために、このクライアントをモックとしたいです。 これを達成するためのベストプラクティスは何ですか?

答えて

1

あなたがここにいくつかのオプションがあります:

ワン:このリンク従ってください:http://net.tutsplus.com/tutorials/ruby/writing-an-api-wrapper-in-ruby-with-tdd/

をそれはwebmockとビデオデッキの宝石を使用してそれを行う方法をステップバイステップで説明しています。アイデアは、ビデオデッキがそれらを記録し、あなたはライブデータベースに対して初めてテストを実行し、その後、あなたのテストが記録された答えをオフに実行されます。

2:あなたはCIの仮想マシン環境では、新鮮なデシベルと照らし合わせてテストを実行することができます。 Neographyためtravis.ymlファイルを見てみましょう:

スクリプト: "バンドル幹部すくいのNeo4j:スペック--trace開始:のNeo4jインストール"

と結果: http://travis-ci.org/#!/maxdemarzi/neography

スリー:あなたのspecファイルのものとあなたのDEVかのprodデシベル、ポイントneographyとは異なるポート番号でテストデシベルを実行し、それを持つことができます。

それは良い質問ですので、私はhttp://maxdemarzi.com

+0

おかげで最高!私は、実際の機能にかかわらず、sinatraにある低レベルのオブジェクトを嘲笑する方法にもっと興味を持っていました。 – Dan

+0

私の答えが見つかりました。私はネオグラフィーでも問題を開いた。あなたは一見をしたいかもしれません。 https://github.com/maxdemarzi/neography/issues/39 – Dan

2

で、これらの日の私のブログ1にその上にポストをやる私の答えが見つかりました:

シナトラアプリ:

require 'sinatra' 

module Backend 
    class Neography 
    # stuff 
    end 
end 

helpers Backend 

before do 
    @neo = Backend::Neography.new 
end 

get '/:id' do 
    "#{@neo.get_node(params[:id])}" 
end 

RSpecの:

describe 'The App' do 
    include Rack::Test::Methods 

    def app 
    Sinatra::Application 
    end 

    def mock_neography 
    @neo_mock = mock("Backend::Neography") 
    @neo_mock.stub!("get_node") {"something else"} 
    Backend::Neography.stub(:new).with(any_args()).and_return(@neo_mock) 
    end 

    it "gets a node" do 
    mock_neography 
    get '/5' 
    last_response.should be_ok 
    end 
end 
関連する問題