【问题标题】:Testing values of a JSON file with Rspec使用 Rspec 测试 JSON 文件的值
【发布时间】:2017-12-09 06:28:05
【问题描述】:

我正在使用 Packer 创建带有内置服务的 AMI。我知道我可以使用 serverspec 测试最终产品,但是在创建 AMI 之前我有一些我想强制执行的命名和标记标准。例如版本、操作系统、名称等。这些值保存在一个 JSON 文件中,该文件在图像创建期间被输入到打包器中。

我的问题是,有没有办法测试/将这些值传递给 Rspec,然后使用正则表达式匹配器来验证它们。例如,如果我的 variables.json 中有

{"version: "0.1.0", "region": "eu-west-1"}

如何使用 Rspecs 正则表达式匹配器检查它

expect(region).to match(/^[a-z]{2}-[a-z]+-[0-9]$/)

【问题讨论】:

  • 您发布的示例有什么问题?

标签: ruby-on-rails json ruby rspec packer


【解决方案1】:

我通过解析 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 表示结构。因此,有效性测试应该涵盖结构和个人价值。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 2013-01-14
    • 2020-09-19
    • 1970-01-01
    相关资源
    最近更新 更多