【问题标题】:React Native - Jest testing with firebaseReact Native - 使用 firebase 进行 Jest 测试
【发布时间】:2018-09-07 15:56:29
【问题描述】:

我是 Firebase 的新手。我已经读过,在你去的时候进行单元测试是件好事。所以这就是我最近一直在尝试做的事情。我目前在尝试在使用 Firebase 的类上测试渲染时遇到问题。这是我一直在尝试修复的以下代码:

import 'react-native';
import React from 'react';
import MainTab from '../../components/MainTab';
import Enzyme from 'enzyme';

import renderer from 'react-test-renderer';

it('renders correctly', () => {
  const tree = renderer.create(
    <MainTab/>
    ).toJSON();
  expect(tree).toMatchSnapshot();
});

但是,在尝试从 firebase 获取当前用户的 id 时,我在测试中遇到以下错误:

以前有没有人偶然发现过这个错误?附言如果这真的很空洞,请不要对我太苛刻,只是想学习。

【问题讨论】:

  • 此时您的currentUser 似乎为空。你能把你的firebase用户身份验证的部分放在一边吗?
  • 这是有道理的,是的。我的用户使用以下方式使用电子邮件和密码进行身份验证:onLogin() { const { email, password } = this.state; firebase .auth() .signInWithEmailAndPassword(email, password) .then(() =&gt; this.successfulLogin()) }` 我已经读过我需要在此之前模拟 signInWithEmailAndPassword。但是,我不知道这应该如何完成。我的 firebase 是通过项目中的本地配置初始化的。
  • 我给你举个例子和建议。

标签: firebase testing react-native jestjs


【解决方案1】:

1。登录WithEmailAndPassword

signInWithEmailAndPassword(email, password) 返回 firebase.Promise 包含非空 firebase.User

使用电子邮件和密码异步登录。

此方法将被弃用,并将更新以解决 firebase.auth.UserCredential 作为返回 firebase.auth.Auth#signInAndRetrieveDataWithEmailAndPassword.

目前,该方法的实现如下:

firebase.auth().signInWithEmailAndPassword(email, password).then(function(user) {
   // user signed in
   // - user.displayName
   // - user.email
   // - user.uid // <---- the user's unique ID
})

2。对于您的情况...

如果您需要测试电子邮件/密码身份验证,我建议您使用 firebase“dev”项目并使用此 dev firebase 项目的用户凭据进行测试。

  • 小心,不要为其他测试存储您的 UID!
  • Firebase 尚未提供身份验证测试。

3。 Firebase beta 到 1.0 版本

使用新的firebase-functions-test npm 模块简化单元测试,简化单元测试的编写。

查看更多信息:

希望我对你有用!

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 2018-12-11
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 2016-07-22
    • 2020-07-24
    • 1970-01-01
    • 2018-03-17
    相关资源
    最近更新 更多