![](/img/trans.png)
[英]doctest QuickCheck – can I import QC instances only in doctests?
[英]How can I use multi-line input with QuickCheck in doctest?
从Doctest的自述文件中 ,可以使用带有QuickCheck的 doctest,如下所示:
-- |
-- prop> sort xs == (sort . sort) (xs :: [Int])
我想用多行描述这个属性,可能就像
-- |
-- prop> sort xs ==
-- (sort . sort) (xs :: [Int])
Doctest本身支持多行输入(同样来自自述文件)
-- |
-- >>> :{
-- let
-- x = 1
-- y = 2
-- in x + y + multiline
-- :}
-- 6
我尝试了几种类似的语法,比如
-- |
-- prop> :{ sort xs ==
-- (sort . sort) (xs :: [Int])
-- }:
没有任何成功。 (在上面的示例中,错误消息是parse error on input '{'
。)
如何在doctest中使用Quickcheck进行多行输入?
截至2017年9月, doctest不允许多行属性 。 但是,您可以像往常一样在doctest中使用quickCheck
:
-- >>> import Test.QuickCheck
-- >>> import Data.List (sort)
-- >>> :{
-- quickCheck $ \xs ->
-- sort xs ==
-- (sort . sort) (xs :: [Int])
-- :}
-- +++ OK, passed 100 tests.
这很冗长,但可以让你编写任意长检查。 请注意,您始终可以创建prop_*
函数并在doctest中使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.