bla*_*ost 7 ruby rspec ruby-on-rails
我正在测试JSON API,现在我这样做:
expect(json).to have_key('name')
expect(json).to have_key('age')
Run Code Online (Sandbox Code Playgroud)
我怎样才能确保JSON具有只是按键name和age,并没有其他的钥匙?
使用#contain_exactly匹配器:
expect(json.keys).to contain_exactly('name', 'age')
Run Code Online (Sandbox Code Playgroud)
规格:
describe "Hash" do
subject { {a: 2, b: 3} }
it "passes" do
expect(subject.keys).to contain_exactly(:a, :b)
end
end
Run Code Online (Sandbox Code Playgroud)
我们来吧:
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
Run Code Online (Sandbox Code Playgroud)
规格:
describe "Hash" do
subject { {a: 2, b: 3} }
it "fails" do
expect(subject.keys).to contain_exactly(:a)
end
end
Run Code Online (Sandbox Code Playgroud)
我们来吧:
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
Run Code Online (Sandbox Code Playgroud)
规格:
describe "Hash" do
subject { {a: 2, b: 3, c: 4} }
it "fails" do
expect(subject.keys).to contain_exactly(:a, :b)
end
end
Run Code Online (Sandbox Code Playgroud)
我们来吧:
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>
Run Code Online (Sandbox Code Playgroud)
处理JSON键时,splat operator(*)可以方便地管理参数列表.
规格:
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
Run Code Online (Sandbox Code Playgroud)
我们来吧:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4251 次 |
| 最近记录: |