私は、テストスイートと別の別の機能の両方で呼び出されるfirebase-serverモジュールのインスタンスを持つテストスイートを持っています。アサーションto.have.stringの失敗が予想されます:UnhandledPromiseRejectionWarning
これは、Firebaseインスタンス内のモック値でさまざまなテストケースをテストできるようにするためです。
意図したとおり、私はFirebase約束テストしてい地点に到達するまで、私は、さまざまなテストを実行し、それらすべての作業私のテストスイートで:私に私の電話をかけるために、データベースの内容をあざけることで
Firebase.database().ref('userData').once('value').then((data) => {
// --- USER ID VALIDATION ---//
if (!userIds[USER_ID]) {
throw(`Invalid User ID: ${USER_ID}`);
}
updates[`${USER_ID}/sessions/${newSessionKey}`] = event.session;
// --- UPDATE DATABASE ---//
Firebase.database().ref().update(updates)
.then(() => context.succeed('Database Write Successful.'))
.catch(error => context.fail(`Database Write Error: ${error}`));
})
.catch(error => context.fail(`Database Access Error: ${error}`));
をラムダ関数は失敗:
it('should fail invocation with invalid user Id: ', function(done) {
var context = {
succeed: function() {
done(new Error('never context.succeed'));
},
fail: function(errorMessage) {
expect(errorMessage).to.have.string("Invalid User ID");
done();
}
}
dbReset();// resetting database state to valid format
Firebase.database().ref('userData').set({
"InvalidFakeUserID" : {
"apiHits" : 100
}
})
myLambda(event, context);
});
は今、私はラムダ関数がエラーを返していることを理解し、私は、テスト側のエラーアサーションを処理する方法を見つけ出すことはできません。私が特定の文字列を期待しようとするとき、文字列が何であっても毎回テストに合格します。私が代わりにエラーが予想される場合:
fail: function(errorMessage) {
expect(errorMessage).be.an('error');
done();
}
それはまた、エラーをトリガ:正しい方向に私を指すことができ
(node:12144) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): AssertionError: expected 'Opearlo Analytics --- Database Access Error: Error: Invalid Voice App Name: fakeNameNotPresentOnDB' to be an error
誰ですか?
「機能面で」? –
あなたは正しいです、私はそれが暗黙のものだと思います、私は文言を修正するつもりです。 – iomv