我正在嘗試干掉不斷宣告的 rspec 測驗let(:createBody) do...end。我想取出let陳述句并根據需要修改每個塊上的變數。但是變數 ( createBody) 不可訪問。在下面的示例代碼中添加了注釋,以查看我想要修改的確切位置createBody。
post "Creates object", controller_action: :create do
...
let(:createBody) do
{
name: "yes",
type: "my_type",
amount_cents: 200,
parameters: {
day: "today"
},
user_group_ids: [],
user_ids: []
}
end
# no users or groups
response 201, "object created" do
...
run_test! do |res|
# this block works fine and can access createBody
body = JSON.parse(res.body)
expect(body["name"]).to eq(createBody[:name])
expect(body["amount_cents"]).to eq(createBody[:amount_cents])
expect(body["type"]).to eq(createBody[:type])
end
end
# with users
response 201, "autocharge rule created" do
...
# want to make some modifications on createBody here, like adding user_ids, but it is out of scope
run_test! do |res|
# this block works fine and can access createBody
body = JSON.parse(res.body)
expect(body["user_ids"]).to match_array(createBody[:user_ids])
end
end
...
end
有沒有辦法實作這種方法?有沒有其他選擇?
uj5u.com熱心網友回復:
我假設response塊的作業方式與context
post "Creates object", controller_action: :create do
let(:createBody) do
{
name: "yes",
type: "my_type",
amount_cents: 200,
parameters: {
day: "today"
},
user_group_ids: [],
user_ids: user_ids # now we can add a let(:user_ids) to each context
}
end
response 201, "object created" do
let(:user_ids) { [] } # empty since we're not using it here
...
run_test! do |res|
# this block works fine and can access createBody
body = JSON.parse(res.body)
expect(body["name"]).to eq(createBody[:name])
expect(body["amount_cents"]).to eq(createBody[:amount_cents])
expect(body["type"]).to eq(createBody[:type])
end
end
# with users
response 201, "autocharge rule created" do
let(:user_ids) { [1, 2, 3] } # add required ids
...
run_test! do |res|
# this block works fine and can access createBody
body = JSON.parse(res.body)
expect(body["user_ids"]).to match_array(createBody[:user_ids]) # we can match by user_ids now
end
end
...
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/497365.html
標籤:轨道上的红宝石 rspec rspec-rails 干燥 rswag
下一篇:在ActiveStorage自定義分析器中獲取“Vips::ErrorException:VipsJpeg:outoforderreadatline1440”
