资产4hs
该库旨在提供一组组合符来断言任意嵌套数据结构。这个库的灵感来自于Java的AssertJ,断言的组成灵感来自于透镜
库。
新断言可以很容易地编写并与其他断言组合。所有失败的断言都会被收集并呈现给用户。
data Foo=Foo{name::String,age::Int}派生(Show,Eq)断言(Foo“someName”15)$等于(Foo“someNName”15).焦点年龄.tag“年龄”.大于20
导致
给定Foo{name=“someName”,age=15}应该等于Foo{name=“someN1ame”,age=15}Foo{name=“someName”,年龄=15}╷│╵Foo{name=“someNName”,年龄=15}▲给定的[年龄]15应该大于20
示例
简单断言
结果=10assert结果$等于10
撰写断言
断言是可组合的,这允许在一个测试用例中验证多个条件。
结果=10assert结果$大于5.小于20>>>给定的4应大于5
关注部分数据结构
有时,转换测试对象并对其提取部分执行断言是很方便的集中
功能。
data Foo=Foo{name::String,age::Int}派生(Show,Eq)断言(Foo“someName”15)$isEqualTo(Foo“someName”15).焦点年龄.大于20.小于等于5>>>给定的15应大于20>>>给定的15应该小于或等于5
改变测试对象
这个集中
函数允许转换被测对象,但原始对象将丢失。功能里面
与函数类似集中
但保留测试中的原始对象。
data Foo=Foo{name::String,age::Int}派生(Show,Eq)断言(Foo“someName”15)$年龄内(大于20。小于5)焦点名称.is等于“someName1”>>>给定的15应大于20>>>>>>给定的15应该小于或等于5>>> >>>给定的“someName”应等于“someName1”>>>“someName”>>>╷>>> │>>> ╵>>>“someName1”>>> ▲
标记断言
一旦我们的测试增长,就很难发现哪些断言失败了,以及为什么失败了。这就是为什么功能标签
存在时,可以为断言命名,并为失败消息指定一个更可读的名称。
data Foo=Foo{name::String,age::Int}派生(Show,Eq)断言(Foo“someName”15)$内部年龄(标记“年龄”。大于20。小于5).tag“名称”焦点名称.is等于“someName1”.tag“不应相等”.is不等于“某个名称”>>>给定的[年龄]15应该大于20>>> >>>给定的[年龄]应小于或等于5岁>>> >>>[name]给定的“someName”应等于“someName1”>>>“someName”>>> ╷>>> │>>> ╵>>>“someName1”>>> ▲>>> >>>[name.should not be equal]给定的“someName”不应等于“someName”
自定义断言
有时创建一个明确描述测试内容的自定义断言很方便。为此,我们有简单断言
功能
适合就业::断言Foo适合就业=simpleAssertion(年龄a>17岁)(“新员工必须年满18岁,但有”<>show(年龄a)).simpleAssertion(\a->age a<70)(\a->“必须小于70岁,但有”<>show(age a))断言(Foo“someName”15)适合就业>>>新员工必须年满18岁,但有15岁断言(Foo“someName”76)适合就业>>>必须小于70岁,但有76岁
资产4hs-规格-assert4hs和hspec公司
资产4hs-可靠-assert4hs和美味的