expect(fn).to.throw(ReferenceError) .and.not.throw(/good function/)
.respondTo(method)
method:String
断言目标类或对象会响应一个方法(存在这个方法)
Klass.prototype.bar = function () {} expect(Klass).to.respondTo('bar') expect(obj).to.respondTo('bar')
如果需要检查一个构造函数是否会响应一个静态方法(挂载在构造函数本身的方法),请查看itself标记
Klass.baz = function () {} expect(Klass).itself.to.respondTo('baz')
.itself
设置itself标记,然后使用respondTo断言
function Foo () {} Foo.bar = function () {} Foo.prototype.baz = function () {} expect(Foo).itself.to.respondTo('bar') expect(Foo).itself.not.to.respond('baz')
.satisfy(method)
method:Function,测试器,接受一个参数表示目标值,返回一个布尔值
断言目标值能够让给定的测试器返回真值
expect(1).to.satisfy(function (num) { return num > 0 })
.closeTo(expected, delta)
expect:Numbre,期望值
delta:Numbre,范围半径
断言目标数字等于expected,或在期望值的+/-delta范围内
expect(1.5).to.be.closeTo(1, 0.5)
.members(set)
set:Array
断言目标是set的超集,或前者有后者所有严格相等(===)的成员。另外,如果设置了deep标记,则成员进行深度比较(include/contains只能接受单个值,但它们的主语除了是数组,还可以判断字符串;members则将它们的能力扩展为能够接受一个数组,但主语只能是数组)
expect([1, 2, 3]).to.include.members([3, 2]) expect([1, 2, 3]).to.not.include.members([3, 2, 8]) expect([4, 2]).to.have.members([2, 4]) expect([5, 2]).to.not.have.members([5, 2, 1]) expect([{ id: 1 }]).to.deep.include.members([{ id: 1 }])
.oneOf(list)
list:Array
断言目标值出现在list数组的某个顶层位置(直接子元素,严格相等)
expect('a').to.be.oneOf(['a', 'b', 'c']) expect(9).to.not.be.oneOf(['z']) // 严格相等,所以对象类的值必须为同一个引用才能被判定为相等 var three = [3] expect([3]).to.not.be.oneOf([1, 2, [3]]) expect(three).to.not.be.oneOf([1, 2, [3]]) expect(three).to.be.oneOf([1, 2, three])
change(object, property)
- object:Object,对象
- property:String,属性名
断言目标方法会改变指定对象的指定属性