简化 HSpec 中的不完整断言
Simplify incomplete assertions in HSpec
我想对 returns 复杂嵌套数据结构的函数进行单元测试,但我只对该结构的某些字段感兴趣。例如:
expectedResult = Right (
UserRecord {
name = "someName",
id = <don't care>
address = AddressRecord {
street = "someStreet",
id = <don't care>
}
}
)
在 HSpec 中是否有通用的方法来断言上述形式的结果?也就是某种写表达式的方式
result `shouldBe` expectedResult
在哪里我不需要指定我不感兴趣的预期结果的那些部分?我找到了 答案,它需要将所有 don't care 字段从 result
复制到 expectedResult
;这可能会变得相当乏味。也许有使用镜头的标准方法?或者一些我没听说过的带有断言助手的库?
一个简单的方法:
result `shouldSatisfy` \a ->
name a == "someName" &&
street (address a) == "someStreet"
我想对 returns 复杂嵌套数据结构的函数进行单元测试,但我只对该结构的某些字段感兴趣。例如:
expectedResult = Right (
UserRecord {
name = "someName",
id = <don't care>
address = AddressRecord {
street = "someStreet",
id = <don't care>
}
}
)
在 HSpec 中是否有通用的方法来断言上述形式的结果?也就是某种写表达式的方式
result `shouldBe` expectedResult
在哪里我不需要指定我不感兴趣的预期结果的那些部分?我找到了 result
复制到 expectedResult
;这可能会变得相当乏味。也许有使用镜头的标准方法?或者一些我没听说过的带有断言助手的库?
一个简单的方法:
result `shouldSatisfy` \a ->
name a == "someName" &&
street (address a) == "someStreet"