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

Ruby on rails 如何测试简单的rake应用程序,ruby-on-rails,ruby,rspec,rake,Ruby On Rails,Ruby,Rspec,Rake,我正在使用创建rest api我创建了api,它的工作状态很好,现在我必须测试这个api。当我们创建rails api时,会自动生成spec_helper.rb文件,就像往常一样,测试的第一行是 需要spec\u助手 请告诉spec_helper.rb文件的代码应该是什么 以及在测试一个简单的rake应用程序时应该关注的其他事情 require 'grape' require 'sequel' require 'json' module Twitter class API < Grap

我正在使用创建rest api我创建了api,它的工作状态很好,现在我必须测试这个api。当我们创建rails api时,会自动生成spec_helper.rb文件,就像往常一样,测试的第一行是

需要spec\u助手

请告诉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
需要“葡萄”
需要“续集”
需要“json”
模块推特
类API:header,供应商=>'twitter'
格式:json
帮手
def当前用户
@当前用户| |=user.authorize!(环境)
结束
def认证!
错误!('401 Unauthorized',401)除非当前用户
结束
结束
资源:用户可以
desc“返回状态”
情妇
需要:id,:type=>Integer,:desc=>“状态id。”
可选:include,:type=>String,:desc=>“要包含在中的参数”
结束
获取“:id”do
“你好,世界”
结束
在这个grape应用程序中,当我调用localhost:9292/users/1234时
然后回答应该是“Hello World”如何测试这个应用程序spec_helper.rb文件的测试内容应该是什么。我只使用grape,不使用rails,这一切都取决于你想测试什么

您想要测试的路由(localhost:9292/users/1234)可能是一个users控制器。在这种情况下,您将希望执行以下操作(使用rspec):

现在关于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任务测试就非常简单,甚至不需要了。

我想您指的是Rack应用程序。在《葡萄自述》中有一个相当不错的测试部分。你应该从那里开始。

我在一个目录中创建了一个api。api运行良好,如何测试它
    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