0

我正在使用grape来创建rest api我创建了api并且它现在工作正常我必须测试这个api。当我们创建rails api时,现在像往常一样自动生成spec_helper.rb文件第一行测试是

需要 spec_helper

请告诉 spec_helper.rb 文件的代码应该是什么

以及在测试一个简单的 rake 应用程序时我应该关注的其他事情。我给出了一个小代码片段,例如我必须测试

require 'grape'
require 'sequel'
require 'json'
module Twitter
  class API < Grape::API

    version 'v1', :using => :header, :vendor => 'twitter'
    format :json

    helpers do
      def current_user
        @current_user ||= User.authorize!(env)
      end

      def authenticate!
        error!('401 Unauthorized', 401) unless current_user
      end
    end

    resource :users do



      desc "Return a status."
      params do
        requires :id, :type => Integer, :desc => "Status id."
        optional :include , :type => String , :desc =>"parameter to include in "

      end
      get ':id' do
"Hello World"
end

在这个葡萄应用程序中,当我调用 localhost:9292/users/1234 时,响应应该是“Hello World” 如何测试这个应用程序 spec_helper.rb 文件的内容应该是什么进行测试。我只使用葡萄而不使用导轨

4

2 回答 2

0

这完全取决于您要测试的内容。

想必你要测试的路由(localhost:9292/users/1234)是一个UsersController。在这种情况下,你会想要做这样的事情(使用 rspec):

    describe UsersController do
      context "GET#show" do
        it "should return 'Hello World'" do
          get :show, id: 1234
          response.body.should include 'Hello World'
        end
      end
    end

现在对于 rake 任务测试,我将创建一个集成测试,从命令行执行 rake 任务,并将预期结果与 rake 任务的输出进行比较,如下所示:

    describe "My Rake Task" do
      it "should return hello world" do
        results = `bundle exec rake my:rake:task`  
        results.should include 'Hello World'
      end
    end

希望这些粗略的例子对你有用!祝你好运!

更新:

您应该始终尽可能多地在类上编写单元测试,以便您的 rake 任务测试非常简单甚至不需要。

于 2013-02-02T20:58:52.353 回答
0

我想你的意思是机架应用程序。Grape 的 README 中有一个相当不错的测试部分。你应该从那里开始。 https://github.com/intridea/grape#writing-tests

于 2013-02-02T23:20:58.980 回答