如何测试简单的rake应用程序

时间:2013-02-02 15:22:57

标签: ruby-on-rails ruby rspec rake

我正在使用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文件的内容进行测试。我只使用葡萄不使用rails

2 个答案:

答案 0 :(得分: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任务测试非常简单甚至不需要。

答案 1 :(得分:0)

我认为你的意思是Rack app。在README for Grape中有一个相当不错的测试部分。你应该从那里开始。 https://github.com/intridea/grape#writing-tests