0

我正在努力用 HSpec 实现一个看似简单的测试问题:我想测试一个函数

myFunc :: (Exception e) a -> Either e MyRecord

在一个测试用例中,我想首先断言返回值是一个Right值,然后打开该值以断言其内容。如果没有繁琐的 case 表达式,我还没有想出一种方法来做到这一点。是否有同时允许模式匹配的断言运算符?

我正在寻找的是以下几行(伪Haskell):

describe "myFunc" $ do
    it "should return funky stuff" $ do
      let result = myFunc <testArgument>
      result `shouldBe` (Right testRecord)
      testRecord `shouldBe` <expectedRecord>

这只是为了说明这个想法,当然,RHS 上的模式匹配不起作用。

4

1 回答 1

0

使用带有 的自定义函数shouldSatisfy,如下所示:result `shouldSatisfy` either (const False) (<expectedRecord> ==)

于 2021-05-02T20:52:59.033 回答