JavaScript代码的契约驱动测试
1. 契约概述
契约语言的主要设计目标是让程序员轻松指定接口。与契约设计方法相比,这些契约具有双重作用:既可以作为可检查的断言附加到JavaScript值上(契约监控),又可以作为这些值和函数的测试用例生成器。
1.1 原始契约
原始契约类似于静态类型系统语言(如Java、C、C++)中使用的类型,大致对应于JavaScript中可用的类型,其解释是严格的,不包括JavaScript类型转换的应用。
| 契约类型 | 描述 | 示例 |
| ---- | ---- | ---- |
| bool | 仅接受true和false值 | |
| int | 接受任何整数值 | |
| number | 接受除NaN之外的任何数字 | |
| 单例契约 | 仅接受单个值,通过编写相应的文字值指定 | 如指定某个具体的整数、浮点数、字符串或布尔值 |
| 区间契约 | 支持整数和浮点数区间,语法为[i;i]或[f;f] | [0;1.0]表示0到1的浮点数区间(包含0和1) |
在某些情况下,可能需要在应用类型转换后检查结果的契约,但语法未提供此类单例契约,可手动定义。原始契约形式 js:ident 允许程序员直接在JavaScript中编写适当的定义来创建自己的契约,JSConTest通过提供各种实用函数支持此类手写契约的构建。
1.2 复合契约
复合契约通过不同方式组合原始契约构建而成。
- 丰富契约 :为契约的测试用例生成添加特定
超级会员免费看
订阅专栏 解锁全文
770

被折叠的 条评论
为什么被折叠?



