2012-04-10 40 views

回答

1

你這裏有幾個選項:

一:按照此鏈接:http://net.tutsplus.com/tutorials/ruby/writing-an-api-wrapper-in-ruby-with-tdd/

它解釋瞭如何一步一步使用webmock和錄像機寶石做到這一點。這個想法是你第一次運行你的測試對一個實時數據庫,vcr記錄它們,然後你的測試將運行記錄的答案。

二:您可以在CI虛擬機環境中針對新鮮數據庫運行測試。 看看爲Neography的travis.yml文件:

腳本: 「捆綁EXEC耙的Neo4j:安裝的Neo4j:啓動規範--trace」

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

三:你可以在不同於dev或prod db的端口號上運行一個測試數據庫,將neography指向你的spec文件中的那個數據庫並存放在它上面。

這是一個很好的問題,所以我會在http://maxdemarzi.com

+0

thanks max!我對嘲笑駐留在sinatra中的低級對象的方式更感興趣,而不管它的實際功能如何。 – Dan 2012-04-11 05:39:25

+0

我找到了我的答案。我也在neography中提出了一個問題;你可能想看看。 https://github.com/maxdemarzi/neography/issues/39 – Dan 2012-04-11 09:50:04

2

做它一個職位上我的博客之一,這些天發現我的答案是:

西納特拉應用:

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 
相關問題