1

我想对返回复杂嵌套数据结构的函数进行单元测试,但我只对该结构的某些字段感兴趣。例如:

expectedResult = Right (
  UserRecord {
    name = "someName",
    id = <don't care>
    address = AddressRecord {
      street = "someStreet",
      id = <don't care> 
      }
    }
  )

是否有一种通用的方法可以在 HSpec 中断言上述形式的结果?也就是说,某种方式来写一个表达式

result `shouldBe` expectedResult

我不需要指定我不感兴趣的预期结果的那些部分?我找到了这个答案,它需要从 to 复制所有无关字段;这可能会变得相当乏味。也许有使用镜头的标准方法?或者一些我没听说过的带有断言助手的库?resultexpectedResult

4

1 回答 1

4

一个简单的方法:

result `shouldSatisfy` \a ->
    name a == "someName"  &&
    street (address a) == "someStreet"
于 2021-05-02T15:43:28.933 回答