私はテストを実行していて、次のことに気づきました:
18 passing (150ms)
1 pending
私はこれを見たことがありません。以前は、テストは成功したか失敗したかのいずれかです。タイムアウトにより障害が発生しました。青いので、どのテストが失敗しているかがわかります。しかし、それにはタイムアウトがあります。簡略版は次のとおりです。
test(`Errors when bad thing happens`), function(){
try {
var actual = doThing(option)
} catch (err) {
assert(err.message.includes('invalid'))
}
throw new Error(`Expected an error and didn't get one!`)
}
ありがとう!
テスト コールバックがあった (つまり、実際の関数、未完了)ですが、コードをリファクタリングすると問題が解決しました。問題は、エラーを予期するコードの実行方法でした。
test('Errors when bad thing happens', function() {
var gotExpectedError = false;
try {
var actual = doThing(option)
} catch (err) {
if ( err.message.includes('Invalid') ) {
gotExpectedError = true
}
}
if ( ! gotExpectedError ) {
throw new Error(`Expected an error and didn't get one!`)
}
});
次のように、テストのit
メソッドを誤って早期に閉じた場合、テストがMochaによって「保留中」と表示される可能性があります。
// Incorrect -- arguments of the it method are closed early
it('tests some functionality'), () => {
// Test code goes here...
};
it
メソッドの引数には、次のようなテスト関数の定義を含める必要があります。
// Correct
it('tests some functionality', () => {
// Test code goes here...
});
多くのテストフレームワークで保留中のテストは、ランナーが実行しないことを決定したテストです。テストがスキップされるようにフラグが立てられているためです。テストがTODOの単なるプレースホルダーだからです。
Mochaの場合、 documentation は、保留中のテストがコールバックのないテストであることを示しています。
あなたはあなたが良いテストを見ていると確信していますか?
この問題に直面したとき、保留中のエラーは、スキップを使用して記述テストを定義し、それを削除するのを忘れたときでした:
describe.skip('padding test', function () {
it('good test', function () {
expect(true).to.equal(true);
})
});
そしてそれを実行しました、私は出力を得ました
Pending test 'good test'
また、describeテストでskipフラグを削除すると、再び機能します。