我正在写一个Groovy测试来检查一个方法的yaml输出,我在比较预期的yaml和生成的yaml时遇到了麻烦。预期的yaml字符串缺少双引号,因为需要双引号的值。我正在使用snakeYaml作为我的yaml解析器。
生成的yaml输出:
key_a: 3
key_b: "value_b"
key_c:
key_c1: "value_c1"
key_c2: "value_c2"
key_c3: "value_c3"
预期的yaml输出:
key_a: 3
key_b: value_b
key_c:
key_c1: value_c1
key_c2: value_c2
key_c3: value_c3
在这种情况下,生成的yaml是正确的,但是我的测试失败了,因为预期的yaml不包含所需的引号。
使用yaml.dump
创建yaml字符串:
def expected = yaml.dump(yaml.load("""
key_a: 3
key_b: "value_b"
key_c:
key_c1: "value_c1"
key_c2: "value_c2"
key_c3: "value_c3"
"""))
我如何用引号创建预期的yaml字符串??任何关于这方面的建议都会有帮助。谢谢!!
1条答案
按热度按时间ruoxqz4g1#
您的测试应该载入YAML并比较值。不论引号为何,都可以这样做。
SnakeYAML确实允许您控制引用样式,但它是not trivial-我对Groovy不够了解,无法评估它是否可以翻译成Groovy。
一般来说,YAML不是一种你可以完全控制表示的格式。因此,你不应该检查特定的表示(实现可能会在更新时改变它表示事物的方式),而是重新加载YAML并检查值。
或者,在您的测试中,在比较之前加载并转储您的 expected YAML,以便它与生成的YAML具有相同的格式。