我正在为我的解析器编写测试,使用的方法可能不是最好的,但到目前为止一直在为我工作。测试假设每个代码块都完美定义了 AST 表示,如下所示:
(parse "x = 5") `shouldBe` (Block [Assignment [LVar "x"] [Number 5.0]])
然而,当我转向更复杂的案例时,需要进行更“模糊”的验证:
(parse "t.x = 5") `shouldBe` (Block [Assignment [LFieldRef (Var "t") (StringLiteral undefined "x")] [Number 5.0]])
我undefined
在这个示例中放入了我不想与解析结果进行比较的字段(它是字符串文字的源位置)。现在我看到的唯一修复方法是重写代码以使用shouldSatisfy
而不是shouldBe
,如果我找不到任何其他解决方案,我将不得不这样做。