gpt4 book ai didi

ruby-on-rails - 期望 JSON 在 rspec 中只有一组特定的键?

转载 作者:数据小太阳 更新时间:2023-10-29 06:59:03 25 4
gpt4 key购买 nike

我正在测试一个 JSON API,现在我这样做:

expect(json).to have_key('name')
expect(json).to have_key('age')

我如何确保 JSON 只有nameage,没有其他键?

最佳答案

使用 #contain_exactly匹配器:

expect(json.keys).to contain_exactly('name', 'age')

例子

#1

规范:

describe "Hash" do
subject { {a: 2, b: 3} }

it "passes" do
expect(subject.keys).to contain_exactly(:a, :b)
end
end

让我们运行它:

arup@linux-wzza:~/Ruby> rspec spec/test_spec.rb
.

Finished in 0.00227 seconds (files took 0.13131 seconds to load)
1 example, 0 failures

#2

规范:

describe "Hash" do
subject { {a: 2, b: 3} }

it "fails" do
expect(subject.keys).to contain_exactly(:a)
end
end

让我们运行它:

arup@linux-wzza:~/Ruby> rspec spec/test_spec.rb
F

Failures:

1) Hash fails
Failure/Error: expect(subject.keys).to contain_exactly(:a)
expected collection contained: [:a]
actual collection contained: [:a, :b]
the extra elements were: [:b]
# ./spec/test_spec.rb:7:in `block (2 levels) in <top (required)>'

Finished in 0.00243 seconds (files took 0.13206 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/test_spec.rb:6 # Hash fails

#3

规范:

describe "Hash" do
subject { {a: 2, b: 3, c: 4} }

it "fails" do
expect(subject.keys).to contain_exactly(:a, :b)
end
end

让我们运行它:

arup@linux-wzza:~/Ruby> rspec spec/test_spec.rb
F

Failures:

1) Hash fails
Failure/Error: expect(subject.keys).to contain_exactly(:a, :b)
expected collection contained: [:a, :b]
actual collection contained: [:a, :b, :c]
the extra elements were: [:c]
# ./spec/test_spec.rb:7:in `block (2 levels) in <top (required)>'

Finished in 0.00243 seconds (files took 0.13301 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/test_spec.rb:6 # Hash fails
arup@linux-wzza:~/Ruby>

#4

在处理 JSON 键时,splat 运算符 (*) 可以派上用场来管理参数列表。

规范:

describe "Hash" do
subject { {a: 2, b: 3} }
let(:json_keys) { %w{a b} }

it "passes" do
expect(subject.keys).to contain_exactly(*json_keys)
end
end

让我们运行它:

arup@linux-wzza:~/Ruby> rspec spec/test_spec.rb
.

Finished in 0.00227 seconds (files took 0.13131 seconds to load)
1 example, 0 failures

关于ruby-on-rails - 期望 JSON 在 rspec 中只有一组特定的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25210039/

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