assert.rejects()
バージョン追加: 2.5.0.
説明
rejects( promise, message = "" )
rejects( promise, expectedMatcher, message = "" )
提供されたプロミスが拒否されるかどうかをテストし、必要に応じて拒否値を比較します。
名前 | 説明 |
---|---|
promise (thenable) |
拒否に関してテストするプロミス |
expectedMatcher |
拒否値の一致条件 |
message (文字列) |
アサーションの簡単な説明 |
特定の状況に基づいて拒否されたプロミスを返すことが期待されるコードをテストする場合、テストと比較のために asserts.rejects()
を使用します。
expectedMatcher
引数は次のとおりです。
- アサーションが合格とみなされる場合に
true
を返す関数です。 - エラーオブジェクトです。
- 基本コンストラクターを使用して
rejectionValue instanceof expectedMatcher
とします。 rejectionValue.toString()
と一致(または部分一致)する正規表現です。
注意: 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/);
});