0
私は、拒否された約束事でエラーメッセージをチェックしようとしています。テストでメッセージ文字列を間違えてしまっても、それは引き続き通過します。拒否された約束とエラーメッセージを約束したchai-as-promedでどのようにテストしますか?
MyService.doSomething({ id: 12345 }).should.eventually.be.rejectedWith(TypeError, 'no attr foo defined2');
svc.doSomething = function(thing){
var def = $q.defer();
if (!thing.foo) {
def.reject(new Error('no attr foo defined'));
} else {
def.resolve(thing);
}
return def.promise;
};
更新すると、テストが正しく機能していないようです。私はそれを返すタイムアウトした場合:
it.only('should error', function(){
// todo this should fail but it just times out
return MyService.doSomething({ id: 12345 }).should.eventually.be.rejectedWith(TypeError, 'no attr foo defined2');
});
svc.doSomething = function(thing){
var def = $q.defer();
if (!thing.foo) {
def.reject(new Error('no attr foo defined'));
} else {
def.resolve(thing);
}
return def.promise;
};
はここでエラーです:
Error: timeout of 4000ms exceeded. Ensure the done() callback is being called in this test.
私はそれを試みました。文字列が 'no attr foo defined2'である場合、まだ渡されます。 – chovy
そして呼び出し前に戻ります! –
私は 'done()'が呼び出されていないと返すだけでタイムアウトします。 – chovy