assert.rejects()
添加的版本:2.5.0
说明
rejects( promise, message = "" )
rejects( promise, expectedMatcher, message = "" )
测试提供的 Promise 是否拒绝,并可选择比较拒绝值。
名字 | 说明 |
---|---|
promise (然后可用) |
承诺测试拒绝 |
expectedMatcher |
拒绝值匹配器 |
message (字符串) |
断言的简短说明 |
在测试预期会根据一组特定情况返回拒绝承诺的代码时,请使用 assert.rejects()
进行测试和比较。
expectedMatcher
参数可以是:
- 当断言应被视为通过时返回
true
的函数。 - 错误对象
- 使用 ala
rejectionValue instanceof expectedMatcher
的基本构造函数 - 匹配(或部分匹配)
rejectionValue.toString()
的 RegExp
注:为避免混淆message
和expectedMatcher
, 这expectedMatcher
不能成为一个字符串。
例子
QUnit.test('rejects example', assert => {
// simple check
assert.rejects(Promise.reject('some error'));
// simple check
assert.rejects(
Promise.reject('some error'),
'optional description here'
);
// match pattern on actual error
assert.rejects(
Promise.reject(new Error('some error')),
/some error/,
'optional description here'
);
// Using a custom error constructor
function CustomError (message) {
this.message = message;
}
CustomError.prototype.toString = function () {
return this.message;
};
// actual error is an instance of the expected constructor
assert.rejects(
Promise.reject(new CustomError('some error')),
CustomError
);
// actual error has strictly equal `constructor`, `name` and `message` properties
// of the expected error object
assert.rejects(
Promise.reject(new CustomError('some error')),
new CustomError('some error')
);
// custom validation arrow function
assert.rejects(
Promise.reject(new CustomError('some error')),
(err) => err.toString() === 'some error'
);
// custom validation function
assert.rejects(
Promise.reject(new CustomError('some error')),
function (err) {
return err.toString() === 'some error';
}
);
});
assert.rejects()
方法返回一个Promise
,它处理测试成功和失败的(通常是异步的)解决和拒绝逻辑。不需要 await
返回值,因为 QUnit 在内部为您处理异步控制并等待稳定状态。但是,如果您的测试代码需要在 rejects
调用之间保持一致且更加孤立的状态,则应明确等待以阻止下一个语句。
QUnit.test('stateful rejects example', async assert => {
let value;
// asynchronously resolve if value < 5, and reject otherwise
function asyncChecker () {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (value < 5) {
resolve();
} else {
reject('bad value: ' + value);
}
}, 10);
});
}
value = 8;
await assert.rejects(asyncChecker(), /bad value: 8/);
// if the above was not awaited, then the next line would change the value
// before the previous assertion could occur, and would cause a test failure
value = Infinity;
await assert.rejects(asyncChecker(), /bad value: Infinity/);
});
相关用法
- JavaScript assert.expect()用法及代码示例
- JavaScript assert.propContains()用法及代码示例
- JavaScript assert.notPropContains()用法及代码示例
- JavaScript assert.timeout()用法及代码示例
- JavaScript assert.deepEqual()用法及代码示例
- JavaScript assert.propEqual()用法及代码示例
- JavaScript assert.notDeepEqual()用法及代码示例
- JavaScript assert.pushResult()用法及代码示例
- JavaScript assert.notPropEqual()用法及代码示例
- JavaScript assert.async()用法及代码示例
- JavaScript assert.strictEqual()用法及代码示例
- JavaScript assert.notEqual()用法及代码示例
- JavaScript assert.notOk()用法及代码示例
- JavaScript assert.throws()用法及代码示例
- JavaScript assert.equal()用法及代码示例
- JavaScript assert.verifySteps()用法及代码示例
- JavaScript assert.false()用法及代码示例
- JavaScript assert.ok()用法及代码示例
- JavaScript assert.true()用法及代码示例
- JavaScript assert.notStrictEqual()用法及代码示例
- JavaScript assert.step()用法及代码示例
- JavaScript array.length属性用法及代码示例
- JavaScript esri/layers/OpenStreetMapLayer.minScale用法及代码示例
- JavaScript esri/layers/KMLLayer.maxScale用法及代码示例
- JavaScript esri/widgets/Histogram.labelFormatFunction用法及代码示例
注:本文由纯净天空筛选整理自qunitjs.com大神的英文原创作品 assert.rejects()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。