使用 Rspec 测试 JSON 文件的值
Testing values of a JSON file with Rspec
我正在使用 Packer 创建带有内置服务的 AMI。我知道我可以使用 serverspec 测试最终产品,但我有许多命名和标记标准,我想在创建 AMI 之前强制执行。例如版本、OS、名称等。这些值保存在 JSON 文件中,该文件在映像创建期间被送入加壳器。
我的问题是,有没有一种方法可以测试/将这些值传递给 Rspec,然后使用正则表达式匹配器来验证它们。例如,如果我在 variables.json
{"version: "0.1.0", "region": "eu-west-1"}
我如何使用 Rspecs 正则表达式匹配器来检查它
expect(region).to match(/^[a-z]{2}-[a-z]+-[0-9]$/)
我通过解析 JSON 然后使用强大的 include
来测试结果哈希来测试这些东西。例如。试试这个 packed_json_spec.rb
:
require "json"
describe "packed JSON data" do
let(:input) {'{"version" : "0.1.0", "region" : "eu-west-1"}'}
it "is valid" do
h = JSON.parse(input)
expect(h).to include("version" => match(/^\d+\.\d+\.\d+$/))
expect(h).to include("region" => match(/^eu-\w+-\d+$/))
end
end
备注:
- 不要忘记 RSpec 仍然是 Ruby。
- JSON表示结构。因此有效性测试应该涵盖结构和个体值。
希望对您有所帮助。干杯!
我正在使用 Packer 创建带有内置服务的 AMI。我知道我可以使用 serverspec 测试最终产品,但我有许多命名和标记标准,我想在创建 AMI 之前强制执行。例如版本、OS、名称等。这些值保存在 JSON 文件中,该文件在映像创建期间被送入加壳器。
我的问题是,有没有一种方法可以测试/将这些值传递给 Rspec,然后使用正则表达式匹配器来验证它们。例如,如果我在 variables.json
{"version: "0.1.0", "region": "eu-west-1"}
我如何使用 Rspecs 正则表达式匹配器来检查它
expect(region).to match(/^[a-z]{2}-[a-z]+-[0-9]$/)
我通过解析 JSON 然后使用强大的 include
来测试结果哈希来测试这些东西。例如。试试这个 packed_json_spec.rb
:
require "json"
describe "packed JSON data" do
let(:input) {'{"version" : "0.1.0", "region" : "eu-west-1"}'}
it "is valid" do
h = JSON.parse(input)
expect(h).to include("version" => match(/^\d+\.\d+\.\d+$/))
expect(h).to include("region" => match(/^eu-\w+-\d+$/))
end
end
备注:
- 不要忘记 RSpec 仍然是 Ruby。
- JSON表示结构。因此有效性测试应该涵盖结构和个体值。
希望对您有所帮助。干杯!