自定义 QuickCheck 失败消息
Custom QuickCheck failed message
test1 = hspec $ do
describe "blabla" $ do
it "should be equl" $ verbose $
\input-> ...
在上面的代码中,当测试失败时,它会打印失败的 input
。但我实际上对可以从 input
计算出的另一个值感兴趣。我可以要求 QuickCheck
打印另一个值吗?
不知何故,我从未见过它做广告,但您可以在 QuickCheck
属性中使用 hspec
的期望。这是一个例子:
describe "blabla" $ do
it "should be equl" $ verbose $ \input ->
round input `shouldBe` floor (input :: Double)
上面的属性显然不是真的,所以应该失败。因为我们不仅对 input
感兴趣,还想知道它的计算值,shouldBe
会给我们这样的信息:
3) blabla should be equl
Falsifiable (after 2 tests and 4 shrinks):
0.6
expected: 0
but got: 1
自然地,由于 verbose
,只有 input
会为通过的测试打印,而计算值(例如 round input
)只会为失败的测试用例打印,无论如何,这就是您要找的东西。
test1 = hspec $ do
describe "blabla" $ do
it "should be equl" $ verbose $
\input-> ...
在上面的代码中,当测试失败时,它会打印失败的 input
。但我实际上对可以从 input
计算出的另一个值感兴趣。我可以要求 QuickCheck
打印另一个值吗?
不知何故,我从未见过它做广告,但您可以在 QuickCheck
属性中使用 hspec
的期望。这是一个例子:
describe "blabla" $ do
it "should be equl" $ verbose $ \input ->
round input `shouldBe` floor (input :: Double)
上面的属性显然不是真的,所以应该失败。因为我们不仅对 input
感兴趣,还想知道它的计算值,shouldBe
会给我们这样的信息:
3) blabla should be equl
Falsifiable (after 2 tests and 4 shrinks):
0.6
expected: 0
but got: 1
自然地,由于 verbose
,只有 input
会为通过的测试打印,而计算值(例如 round input
)只会为失败的测试用例打印,无论如何,这就是您要找的东西。