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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。