我正在开发一个后端服务,该服务通过FCM或APNS将推送通知发送到移动应用程序。我想创建一个可以在一分钟内运行并验证服务器可以成功发送通知的自动化测试。请注意,我不一定要检查通知是否已传递,仅是FCM或APNS已成功处理了发送消息的请求。
我知道,从理论上讲,我可以使用诸如appium之类的工具来自动化该测试,并使用测试挂钩从该应用中检索注册/设备令牌,但是使用appium来测试后端是否可以发送消息似乎很麻烦。我也尝试过使用硬编码的注册令牌,但是注册令牌和设备令牌很容易旋转,因此测试可能会突然停止通过。还有其他选择吗?
答案 0 :(得分:2)
首先,我会考虑我们要涵盖的情况。
200
。因此,您可以使用通常的集成测试,该测试将调用Firebase API并检查成功代码(200
)和错误字段(MissingRegistration / InvalidRegistration / NotRegistered
),如果您获得了这样的一对-您的请求已成功。无需使用正确的用户设备令牌对其进行测试,因为如果其他所有操作都正确,则结果将是相同的(但实际上已传递到电话中)。
Firebase docs 答案 1 :(得分:1)
Appium是用于黑盒测试的自动化框架,因此,在您的情况下,它可以检查通知是否在设备上弹出。就是这样。
Appium无法访问您的应用程序代码,您可以通过它发送adb
命令,但是基本上,直到将其公开到应用程序的UI层之前,它都无法使用令牌。
此外,Firebase不支持Appium。
我建议您研究Espresso,在这里编写可直接访问应用程序代码的测试。
答案 2 :(得分:0)
您可以在firebase中编写云功能来实现此功能,可以使用firebase CLI从本地系统推送该功能。此云功能可以在Nodejs中编写。
您可以阅读此文档来编写云功能。
https://firebase.google.com/docs/functions/
这些云功能可以在某些事件(例如,用户注册时更改实时数据库)中触发。等等,您可以使用已注册的侦听器上的回调从移动应用程序获取令牌,我们可以使用它们将通知推送到应用程序。您可以通过以下简单的项目。
https://aaronczichon.de/2017/03/13/firebase-cloud-functions/