javascript - Firebase 模拟器可以用于与 React 前端的集成测试吗?
问题描述
我有一个简单的 React 前端应用程序,它使用 Firebase 进行身份验证和 Firestore(如果附加上下文有帮助,则为https://jlowen-netflix.netlify.app/ )。我将 Firebase 作为 Context 提供给我的顶级应用程序,并监听 Auth 中的更改以将用户重定向到登录的内容。
我想测试从匿名到注册到登录的端到端用户工作流程。我已经安装了 Firebase CLI 以及 Firebase 模拟器。我可以通过访问 localhost 上的 Emulator UI 来验证模拟器是否正确运行。当我为 Create-React-App 启动开发服务器 (npm start) 时,我还可以验证应用程序是否与模拟器挂钩。我在模拟器 UI 中创建了一个测试用户,并且能够按预期登录。
当我尝试让它在 Jest 中呈现时,我的身份验证侦听器自定义挂钩会在 firebase 初始化之前尝试访问 firebase 上下文上的 auth() 方法。
TypeError: Cannot read property 'auth' of undefined
9 | // As recommended by Firebase - need to set up subscription
10 | useEffect(() => {
> 11 | const listener = firebase.auth().onAuthStateChanged((authUser) => {
| ^
12 | console.log(`Firebase detected auth change: ${authUser}`)
13 | if (authUser) {
14 | localStorage.setItem("authUser", JSON.stringify(authUser))
at src/hooks/use-auth-listener.js:11:31
我似乎无法解决我在 Jest 中遇到的某种异步问题,但在部署的应用程序中却没有。
我是 React 和 Jest 的新手,所以如果我能提供更多信息,请告诉我!
解决方案
不幸的是,您的错误似乎与您的主要问题无关。您所显示的错误是您忘记import
或忘记某处。阅读firebase 包文档并在文件顶部添加类似内容:require
firebase
var firebase = require('firebase');
我也有兴趣将 firebase 应用程序连接到本地模拟器,所以如果我想出办法,我会编辑这个答案。与此同时..为虚假的希望感到抱歉。
推荐阅读
- c# - 将连字字符放入 ComboBox 文本
- reactjs - Redux 表单无法输入
- java - 创建一个将采用 jsonPath 和类型的验证,检查 jsonpath 和类型的数据类型是否相同
- android - 更改 Recyclerview 背景颜色会使工具栏消失 - 为什么会这样
- javascript - 如何使用 jQuery 搜索嵌套的 JSON 数组?
- python - 如何用python找到一个数的质因数
- mysql - Mysql while 循环不工作(返回 1064)
- python - 为什么一个全局列表更新为与另一个相同的值,即使它们从未被告知相等?
- c++ - C++ std::vector 条目在函数中为 NULL,但大小保持在零以上
- asp-classic - 找到正确答案后停止