我可以保留全局状态在Firebase模拟器云功能?



我想在模拟器中运行调用多个云函数的测试,这些测试使用了模拟出的外部服务(getstream.io)。这意味着模拟必须在函数调用期间保留。这样的事情可能发生吗?

let mock = new SomethingMock();
exports.resetMock = functions.https.onCall((data, context) => {
mock = new SomethingMock();
});
exports.addActivity = functions.https.onCall(async (data, context) => {
await mock.addActivity(something);
});
exports.getActivities = functions.https.onCall((data, context) => {
// assumes addActivity has been called a few times
return mock.getActivities();
});

这个页面说不保证在生产中保存全局状态,但没有说关于模拟器:https://firebase.google.com/docs/functions/tips use_global_variables_to_reuse_objects_in_future_invocations

firebase模拟器不保证全局状态的保存。
答案就在定义本身:

Firebase本地仿真器套件由单独的服务仿真器组成,这些服务仿真器构建用于精确地模拟Firebase服务的行为。这意味着你可以直接将你的应用连接到这些模拟器来执行集成测试或QA,而无需接触生产数据。它们(仿真的firebase服务)是为准确性而构建的,而不是性能或安全性,不适合在生产中使用。

话虽如此,拥有一个不像服务在生产中那样返回结果的模拟器并没有多少附加价值。

相关内容

最新更新