gpt4 book ai didi

ruby - 如何重构 API 的 RSpec 测试

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:48 27 4
gpt4 key购买 nike

我有一系列针对基于 Sinatra 的 API 的 RSpec 测试,我想重构它们以使其更简单一些并减少重复。

这是一个路由测试示例:

describe 'post /sections with empty data' do
before do

params = {
:site_id => site.id,
:page_id => page.id,
}

post '/sections', params, @session
end

specify { last_response.status.should == 200 }
specify { json_response['id'].should_not be_nil }
specify { json_response['type'].should == default_section_type }
end

每个测试都将使用相同的基本 URL,具有相同的 session 数据,唯一的区别是参数和响应应该是什么。每个路由至少有 4 个测试(GET、POST、PUT、DELETE),通常更多。

有没有办法让这些测试更易于管理?

最佳答案

无需借助元编程,您可以使用嵌套的 describe block 来仅覆盖您想要的参数:

describe "/sessions" do
before do
send(http_method, "/sessions", params, @session)
end

describe "with POST" do
let(:http_method) { :post }

describe "and empty data" do
let(:params) do
{ :site_id => site.id, :page_id => page.id }
end

specify { last_response.status.should == 200 }
specify { json_response['id'].should_not be_nil }
specify { json_response['type'].should == default_section_type }
end

describe "with non-empty data" do
let(:params) do
# relevant params
end
end
end

describe "with GET" do
let(:http_method) { :get }

# ...
end
end

关于ruby - 如何重构 API 的 RSpec 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com