我不知道如何开玩笑模拟Firebase身份验证与谷歌登录正确。我有以下代码:
易于理解的tsx
import React, { Component } from 'react';
import * as firebase from 'firebase'
import { withRouter} from 'react-router-dom';
class simple extends Component {
signInWithgoogle() {
var provider = new firebase.auth.GoogleAuthProvider();
// how to mock provider when simulate click event.
firebaseApp.auth().signInWithRedirect(provider)
}
render() {
return (
<div>
<button onClick={this.signInWithgoogle.bind(this)}>
Login with Google
</button>
</div>
);
}
export default withRouter(connect(
)(simple));
易于理解的测验tsx
const mockStore = configureMockStore([thunk]);
const store = mockStore();
describe('<simple />', () => {
test("simulate click button", () =>{
const withProvider = (
<Provider store={store}>
<simple.WrappedComponent {...FirebaseAuthProps} />
</Provider>
);
const wrapper = mount(withProvider);
wrapper.find('Button').simulate('click');
});
});
如有任何帮助,请举例说明?
如果您决定将Firebase Auth与Firebase Analytics结合使用,我还有一个类似的解决方案:
js prettyprint-override">jest.mock('firebase/app', () => {
const analytics = jest.fn().mockReturnValue({
logEvent: jest.fn(),
});
const auth: any = jest.fn().mockReturnValue({
signInWithRedirect: jest.fn(),
getRedirectResult: jest.fn().mockResolvedValue({
credential: {
providerId: 'Google',
},
user: {
getIdToken: jest.fn().mockResolvedValue('abc1234'),
},
additionalUserInfo: {
profile: {
email: 'test@test.com',
name: 'John Doe',
},
},
}),
});
auth.GoogleAuthProvider = class {
addScope = jest.fn();
};
return { auth, analytics };
});
Typescript命名空间是编译和类型擦除之后的某种JS函数。当然,在了解了这一点之后,您可以将属性分配给JS函数。以下是解决方案:
简单。tsx
:
import React, { Component } from 'react';
import firebase from 'firebase';
import { withRouter } from 'react-router-dom';
class simple extends Component {
signInWithgoogle() {
var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithRedirect(provider);
}
render() {
return (
<div>
<button onClick={this.signInWithgoogle.bind(this)}>Login with Google</button>
</div>
);
}
}
export default withRouter(simple as any);
简单。规格tsx
:
import React from 'react';
import { mount } from 'enzyme';
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import { Provider } from 'react-redux';
import simple from './simple';
import firebase from 'firebase';
const mockStore = configureMockStore([thunk]);
const store = mockStore();
const FirebaseAuthProps = {};
jest.mock('firebase', () => {
const auth = jest.fn();
const mAuth = { signInWithRedirect: jest.fn() };
// @ts-ignore
auth.GoogleAuthProvider = jest.fn();
// @ts-ignore
auth.Auth = jest.fn(() => mAuth);
return { auth };
});
describe('<simple />', () => {
afterEach(() => {
jest.resetAllMocks();
});
test('simulate click button', () => {
// @ts-ignore
firebase.auth.mockImplementation(() => new firebase.auth.Auth());
const withProvider = (
<Provider store={store}>
<simple.WrappedComponent {...FirebaseAuthProps} />
</Provider>
);
const wrapper = mount(withProvider);
expect(wrapper.find('button').text()).toBe('Login with Google');
wrapper.find('button').simulate('click');
expect(firebase.auth.GoogleAuthProvider).toBeCalledTimes(1);
expect(firebase.auth).toBeCalledTimes(1);
expect(firebase.auth().signInWithRedirect).toBeCalledTimes(1);
});
});
100%覆盖率的单元测试结果:
PASS src/stackoverflow/58554920/simple.spec.tsx (15.341s)
<simple />
✓ simulate click button (82ms)
------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
------------|----------|----------|----------|----------|-------------------|
All files | 100 | 100 | 100 | 100 | |
simple.tsx | 100 | 100 | 100 | 100 | |
------------|----------|----------|----------|----------|-------------------|
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 17.245s
源代码:https://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/58554920
本文向大家介绍firebase-authentication Google Plus登录身份验证,包括了firebase-authentication Google Plus登录身份验证的使用技巧和注意事项,需要的朋友参考一下 示例 使用Plus登录验证用户 onCreate onStart() 获取资料信息 使用Firebase进行身份验证, onActivityResult 登出
使用,https://github.com/firebase/FirebaseUI-Android/tree/master/codelabs/chat作为登录的参考,我在键入时似乎遇到了问题 我只能键入Auth的提供者,而不能键入,为什么会这样,它提示我键入社会提供者。
该应用程序应该接受用户电子邮件和密码,并使用Firebase身份验证作为后端。我使用像素2作为模拟器。每次应用程序处理登录功能时,它都会崩溃。 下面是Java文件和gradle文件 Java文件:
问题内容: 我正在开发Flask应用程序,并使用Flask-security进行用户身份验证(反过来又在下面使用Flask-login)。 我有一条需要身份验证的路由。我正在尝试编写一个单元测试,该测试对经过身份验证的用户返回适当的响应。 在单元测试中,我正在创建一个用户并以该用户身份登录,如下所示: 在测试内返回正确的用户。但是,请求的视图始终返回的。 所述路线定义为: 我可以肯定我只是不完全了
当使用Firebase身份验证匿名帐户时,它偶尔会在系统中创建一个新的用户ID,有时它会使用相同的用户ID。我真的希望每次都能创建相同的用户ID,这样匿名用户仍然可以在应用程序中维护相同的进度/数据。这实际上是我开始使用Firebase的原因。即使在重新启动应用程序等之后,我如何始终维护一个匿名帐户来保持相同的用户ID? 我希望用户每次以访客身份玩游戏时都能获得相同的ID。我看到有些应用程序在卸载
我试图用注册时使用的凭证登录。Firebase已经有注册用户的条目。每次我试图登录它显示“登录不成功”,我没有看到任何代码问题。请帮帮忙。