我正在使用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
答案 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