typescript - 云函数测试失败并且触发器函数中缺少 context.params
问题描述
我正在关注有关单元测试 firebase 功能的本教程:https ://fireship.io/lessons/testing-cloud-functions-in-firebase/
我为实时数据库触发器添加了一个单元测试,onCreate
当数据到达其中时,context.params
单元测试的输入为空。所以我有
test('checks that the user gets created', async () => {
const userId = 'aaaaaaa';
const path = `/users/${userId}`;
const data = {
"id": userId,
"firstName": "Dan",
"phoneNumber": "+11111111111",
"carInfo": {
"color": "blue",
"make": "Ford",
"model": "Focus",
"plate": "BV-11-AAA"
}
};
// Create a Database snapshot
const snap = testEnv.database.makeDataSnapshot(data, path);
// Execute it
await wrapped(snap);
const after = await admin.database().ref(path).once('value');
const afterValue = after.val();
expect(afterValue.phoneNumber).toBe('+11111111111')
});
我的实际功能 ( index.ts
) 是:
export const newUserCreated = database.ref('/users/{userId}').onCreate(async (snapshot: DataSnapshot, context) => {
console.log('context params : ', context.params);
const user = snapshot.val();
await createStripeCustomerHandler(user, snapshot.key);
});
我在函数的处理程序中得到了实际的有效负载,但是:
它有两个问题:
- 它实际上并没有执行保存到数据库中,因此测试本身失败(
afterValue
为空)(实际上可能是预期的行为。不确定) - 执行单元测试时,上下文参数为空,因此打印出
context params : {}
. 我需要手动发送上下文的参数吗?从testEnv.database.makeDataSnapshot
命令?
我做错了什么还是我错过了什么?先感谢您。
解决方案
推荐阅读
- python - 弄乱 Python PATH 后如何重新下载 matplotlib?
- database - 如何根据两个字段值导出唯一文档?
- java - 包含为两个相同的对象返回 false
- jquery - 在 React 中动态构建渲染函数
- ios - 滚动时 didDeselectItemAt 崩溃
- javascript - 如何获取动态创建的下拉列表的值?
- gnuplot - 如何使用 Gnuplot 在一个图中绘制代表数据集中多个子集行的多个图表?
- python - Pandas 将使用逗号而不是小数点分隔符的数字从对象转换为数字
- r - 如何在 R 中使用配对列按列排列数据框?
- html - 更改显示给用户的结果中的字体