私は、グラフデシベルとしてのNeo4j使用シナトラアプリを持っています。 アプリはネストを介してRESTクライアントとしてdbにアクセスします。sinatraでテストするためのモックデータベースを設定するにはどうすればよいですか?
私はRSpecのを使用して、テスト目的のために、このクライアントをモックとしたいです。 これを達成するためのベストプラクティスは何ですか?
私は、グラフデシベルとしてのNeo4j使用シナトラアプリを持っています。 アプリはネストを介してRESTクライアントとしてdbにアクセスします。sinatraでテストするためのモックデータベースを設定するにはどうすればよいですか?
私はRSpecのを使用して、テスト目的のために、このクライアントをモックとしたいです。 これを達成するためのベストプラクティスは何ですか?
あなたがここにいくつかのオプションがあります:
ワン:このリンク従ってください: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
で、これらの日の私のブログ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
おかげで最高!私は、実際の機能にかかわらず、sinatraにある低レベルのオブジェクトを嘲笑する方法にもっと興味を持っていました。 – Dan
私の答えが見つかりました。私はネオグラフィーでも問題を開いた。あなたは一見をしたいかもしれません。 https://github.com/maxdemarzi/neography/issues/39 – Dan