弹簧 
对照特定规格检查给定对象,使您无法写出锅炉板测试.
var test = require('tape')
var spok = require('spok')
// this would be returned from a function you are testing
var object = {
one: 1,
two: 2,
three: 3,
four: 4,
helloWorld: 'hello world',
anyNum: 999,
anotherNum: 888,
anArray: [1, 2],
anotherArray: [1, 2, 3],
anObject: {},
}
// custom specification
function hasThreeElements(a) {
return a.length === 3
}
test('my object meets the specifications', function(t) {
spok(t, object, {
$topic: 'spok-example',
one: spok.ge(1),
two: 2,
three: spok.range(2, 4),
four: spok.lt(5),
helloWorld: spok.startsWith('hello'),
anyNum: spok.type('number'),
anotherNum: spok.number,
anArray: spok.array,
anotherArray: hasThreeElements,
anObject: spok.ne(undefined),
})
t.end()
})

安装
npm install spok
为啥不干脆 deepEqual? 吗?
deepEqual 在多数情况下都很好,但在某些情况下你需要更多的控制,即.
- 数值并不完全吻合,而是在一定范围内
- 您想要提供一个前提来确定一个值是否正确
- 您只想要检查对象中包含的一子集值
调整打印细节
默认的 spok 打印出特定断言所拼接的规格,即. satisfies: spok.range(2, 4)。 。 。 .
你可以通过 spok.printSpec = false。 。 。 .
另一方面,如果你想要更多细节 关于Satisized的规格做 spok.printDescription = true 而不是去获得
要打印诸如 satisfies: spok.range(2, 4) 2 <= value <= 4。 。 。 .
相片和描述被用灰色印刷出,这样可以专注于测试输出的实际值.
目录 生成方式 DocTOC 文档
spok提供了几个常见的规格函数. 但是,你也可以写自己的功能,只要返回 true
如果符合规格 false 如果不是(见上文实例).
如果您写了一个对他人有用的规格函数,请加上一个测试并提供一个PR.
spok.* 比较函数名称来源于 击打 比较
运算符 让他们更容易记住.
API 密码
弹簧
对照对象检查给定的规格.
测试完成后 实际数 打印值以校验同时 如果其中之一失败,则每个规格都得到验证并造成测试失败.
参数
t对象 具有断言功能的equal财务报告和审定财务报表deepEqual(比较对象) - 使用 窃听, (中文(简体) ), 磁带, (中文(简体) ), 主张 或任何具有这些并因此兼容的其他图书馆obj对象 对照specifications对象 核查的规格
宽度
分明给定数字在给定范围内,即. min<= x <=max。 。 。 .
var spec = {
x: spok.range(1, 2), // specifies that x should be >=1 and <=2
}
参数
spok.gt (英语)
说明数字大于给定的标准.
var spec = {
x: spok.gt(1), // specifies that x should be >1
}
参数
n数目 标准
spok.ge (英语)
说明一个数字大于或等于给定的标准.
var spec = {
x: spok.ge(1), // specifies that x should be >=1
}
参数
n数目 标准
spok.lt (英语)
说明一个数字低于给定的标准.
var spec = {
x: spok.lt(1), // specifies that x should be < 1
}
参数
n数目 标准
spok.le (西班牙语)
说明一个数字低于或等于给定的标准.
var spec = {
x: spok.le(1), // specifies that x should be <=1
}
参数
n数目 标准
spok.ne (英语)
指定该值不等于另一个值.
var spec = {
x: spok.ne(undefined), // specifies that x should be defined
}
参数
value任意 标准
spok.gtz (英语)
指定数值大于零
var spec = {
x: spok.gtz,
}
spok.gez (西班牙语)
指定数值大于或等于零
var spec = {
x: spok.gez,
}
spok.ltz (英语)
指定数值小于零
var spec = {
x: spok.ltz,
}
斯波克. 莱斯
指定数值为小于或等于零
var spec = {
x: spok.lez,
}
spok.type (帮助)
指定输入为特定类型.
var spec = {
x: spok.type('number'), // specifies that x should be a Number
}
参数
t字符串 预期类型
阵列
指定输入为数组.
var spec = {
x: spok.array, // specifies that x should be an Array
}
阵列元素
指定输入是含有特定数量元素的数组
var spec = { (中文(简体) ) x: spok.arrayElements(2) // 指定x应为有2个元素的阵列 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
参数
n数目 元素数量
阵列元素范围
指定输入是含有一定范围内若干元素的数组
var spec = { (中文(简体) ) x: spok.arrayElements Range (2, 4) // 指定x应为有 2-4 元素的阵列 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
参数
数字
指定类型编号和 isNaN(x) 返回时 false。 。 。 .
var spec = {
x: spok.number, // specifies that x should be a Number
}
斯波克. 字符串
指定输入为字符串.
var spec = {
x: spok.string // specifies that x should be a String
}
sp. 1
检查该值是否存在于列表中
var spec = {
role: spok.oneOf(['intern', 'employee']),
}
函数
指定输入是一个函数.
var spec = {
x: spok.function // specifies that x should be a function
}
spok. 定义对象
指定输入是对象而不是对象 null。 。 。 .
var spec = {
x: spok.definedObject, // specifies that x is a non-null object
}
启动
指定字符串以指定的子字符串开头.
页:1:只有具备ES6的节点.js可用 startsWith 函数
var spec = {
x: spok.startsWith('hello'), // specifies that x should start with 'hello'
}
参数
what字符串 子字符串应该从
使用 spok.ends 时
指定字符串以指定的子字符串结尾.
页:1:只有具备ES6的节点.js可用 endsWith 函数
var spec = {
x: spok.endsWith('hello'), // specifies that x should start with 'hello'
}
参数
what字符串 子字符串应该从
测试
指定字符串需要匹配给定正则表达式.
var spec = {
x: spok.test(/hello$/), // specifies that x should match /hello$/
}
参数
regex正则Exp 用来检查字符串的正则表达式test
spok. 定义
指定一个值被定义,即它不是 null 也没有 undefined。 。 。 .
var spec = {
x: spok.defined,
}
spok. 不定义
指定一个数值不是定义的,即它是 null 或者说 notDefined。 。 。 .
var spec = {
x: spok.notDefined,
}
许可证
麻省理工学院