使用 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

备注:

  1. 不要忘记 RSpec 仍然是 Ruby。
  2. JSON表示结构。因此有效性测试应该涵盖结构和个体值。

希望对您有所帮助。干杯!