我想知道测试 REST API 的最佳实践(在这种情况下,使用 Sinatra 和 Rspec)。明显的问题是,如果您有一个检查GET /users
用户列表的测试,您会希望经历创建用户、运行测试、然后销毁用户的各个阶段。但是,如果创建/销毁步骤也依赖于 API,那么您最终要么打破基于有序的测试规则,要么在一个测试中测试多个事物(例如,它是否添加了一个用户?......确实GET /users
返回了一个用户列表...是否删除了用户?)。
问问题
442 次
2 回答
0
您可以使用 FactoryGirl。在您的测试中,您可以通过 API 创建用户或使用 FG 创建存根,然后删除、修改等。FG 是一个非常灵活的 ORM 测试助手,非常适合这类东西。
于 2012-06-20T10:43:03.977 回答
0
我也同意@three - 使用FactoryGirl!
举个例子(首先,定义一个示例对象):
FactoryGirl.define do
sequence(:random_ranking) do |n|
@random_rankings ||= (1..10000).to_a.shuffle
@random_rankings[n]
end
factory :todo do
title { Faker::Lorem.sentence}
id { FactoryGirl.generate(:random_ranking) }
completed [true, false].sample
completed_at Time.new
created_at Time.new
updated_at Time.new
end
end
在您的规范测试中,描述您的列表操作:
describe 'GET #index' do
before do
@todos = FactoryGirl.create_list(:todo, 10)
@todos.each do |todo|
todo.should be_valid
end
get :index, :format => :json
end
it 'response should be OK' do
response.status.should eq(200)
end
it 'response should return the same json objects list' do
response_result = JSON.parse(response.body)
# these should do the same
# response_result.should =~ JSON.parse(@todos.to_json)
response_result.should match_array(JSON.parse(@todos.to_json))
end
end
于 2014-03-17T21:11:28.330 回答