2012-04-10 47 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 
相关问题