Я недавно перенес свои функции Firebase с бета-версии на 1.0.2 и в процессе написал несколько модульных тестов с использованием нового Firebase Test SDK для облачных функций.Некоторые из моих функций отвечают за зеркалирование данных из Realtime в Firestore, и поэтому я использовал триггер onUpdate () Realtime Database, который предоставляет change и context объекты,Моя проблема заключается в том, что при их тестировании я получаю сообщение об ошибке TypeError: Невозможно прочитать свойство 'val' из неопределенного , поскольку свойства после и до объекта измененияне определено.Эти функции работают при развертывании, эта ошибка возникает только во время тестирования.Одной из функций, показывающих эту проблему, является:
exports.mirrorTransactionUpdates = functions.database.ref("transactions/{id}").onUpdate((change, context) => {
return firestore.collection("transactions").doc(context.params.id).set(change.after.val());
});
и модульный тест:
describe("mirrorTransactionUpdates", () => {
it("should update transactions in firestore", () => {
const data = {date: 1};
const snapshot = test.database.makeDataSnapshot(data, "transactions/test_transaction_id");
return test.wrap(activeFunctions.mirrorTransactionUpdates)(snapshot, {
params: {id: "test_transaction_id"}
}).then(() => {
return firestore.collection("transactions").doc("test_transaction_id").get()
.then(mirroredDoc => {
assert.deepEqual(mirroredDoc.data(), data);
});
});
});
});
Я нигде не могу найти, почему change.before и change.after не определены, когдамодульное тестирование.Я также не вижу в документах нигде, где я могу / должен определить их сам.Следует отметить, что это также происходит с обработчиком событий onWrite () .Любая помощь будет принята с благодарностью!
Я использую firebase-admin 5.11.0 и firebase-functions 1.0.2