- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我当前的模拟,我希望createUserWithEmailAndPassword
返回firebase.auth.UserCredential
,以便我可以测试它是否在我的应用程序中被调用。 ts
App.spec.ts
import myAuthenticationPlugin from 'authenticationPlugin/App'
import firebase from 'firebase/app'
jest.mock('firebase/app', () => {
return {
auth: jest.fn().mockReturnThis(),
currentUser: {
email: 'test',
uid: '123',
emailVerified: true
},
signInWithEmailAndPassword: jest.fn(),
createUserWithEmailAndPassword:jest.fn(() => {
return {
user:{
sendEmailVerification:jest.fn(),
},
}
}),
initializeApp:jest.fn()
};
});
describe('Test for signup (email,password)',() => {
it('createUserWithEmailAndPassword ()',async () => { //this works
await myAuthenticationPlugin.signup(email, password)
expect(firebase.auth().createUserWithEmailAndPassword).toBeCalledWith(email, password)
})
it('sendEmailVerification()',async ()=>{
await myAuthenticationPlugin.signup(email, password)
const userCredential= await firebase.auth().createUserWithEmailAndPassword(email,password)
if(userCredential.user!=null){
expect(userCredential.user.sendEmailVerification).toBeCalled() //this fails as i'm not able to mock properly
}
})
})
App.ts
import firebase from 'firebase/app'
import 'firebase/auth'
import './Init'
const App= {
signup: async (email, password) => {
const userCredential = await firebase.auth().createUserWithEmailAndPassword(email, password)
await userCredential.user.sendEmailVerification()
return `Check your email for verification mail before logging in`
},
}
export default App
最佳答案
这是单元测试解决方案:
app.ts
:
import firebase from 'firebase/app';
const App = {
signup: async (email, password) => {
const userCredential = await firebase.auth().createUserWithEmailAndPassword(email, password);
await userCredential.user!.sendEmailVerification();
return `Check your email for verification mail before logging in`;
},
};
export default App;
app.test.ts
:
import App from './app';
import firebase from 'firebase/app';
const userCredentialMock = {
user: {
sendEmailVerification: jest.fn(),
},
};
jest.mock('firebase/app', () => {
return {
auth: jest.fn().mockReturnThis(),
createUserWithEmailAndPassword: jest.fn(() => userCredentialMock),
};
});
describe('61391590', () => {
afterAll(() => {
jest.resetAllMocks();
});
it('should pass', async () => {
const email = '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4e2b362f233e222b0e29232f2722602d2123" rel="noreferrer noopener nofollow">[email protected]</a>';
const password = '123';
const actual = await App.signup(email, password);
expect(actual).toEqual('Check your email for verification mail before logging in');
expect(firebase.auth().createUserWithEmailAndPassword).toBeCalledWith(email, password);
expect(userCredentialMock.user?.sendEmailVerification).toBeCalled();
});
});
100%覆盖率的单元测试结果:
PASS stackoverflow/61391590/app.test.ts (12.946s)
61391590
✓ should pass (7ms)
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 100 | 100 |
app.ts | 100 | 100 | 100 | 100 |
----------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 14.863s
源代码:https://github.com/mrdulin/react-apollo-graphql-starter-kit/tree/master/stackoverflow/61391590
关于javascript - 如何模拟 firebase.auth.UserCredential Jest ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61391590/
这是我当前的模拟,我希望createUserWithEmailAndPassword返回firebase.auth.UserCredential,以便我可以测试它是否在我的应用程序中被调用。 ts A
我使用 AcquireTokenAsync 通过 Azure Active Directory 进行身份验证。 下面是代码 var uc = new UserCredential(username,
我正在尝试将我的 spring boot 应用程序部署到 cloud foundry。但是我收到以下错误。 2016-02-19T16:54:29.57+0000 [App/0] ERR C
我们有一个使用 AFHTTPClient 的类和 AFHTTPRequestOperation是在内部。在开发中,我们使用无效的 SSL 证书连接到服务器,因此我们在返回请求操作的方法中有以下代码:
// Based on http://stackoverflow.com/questions/3934639/soap-authentication-with-php include 'auth.ph
我使用 ms vs express 2012 win 桌面并尝试编译此代码示例 https://developers.google.com/youtube/v3/code_samples/dotnet
其中一个应用程序使用 MongoClient 作为与最近启用了身份验证的 MongoDB 交互的核心。在这个 mongoClient 被初始化为: mongoClient = new MongoCli
我正在关注 this blog post在用户注册后向他们发送电子邮件验证,这是我在执行 sendEmailVerification() 时遇到的问题 The method 'sendEmailVer
我刚刚开始使用 mongodb 作为我的新项目的存储库,一切都很好,直到我们决定在 mongo 服务器中设置用户身份验证。 我如下更改 spring.config.xml 以通过身份验证连接到 mon
所以我有这段代码 我的问题是,如果我已经通过 OAuth 进行身份验证,我该如何配置 UserCredential? 目前的情况是代码将显示另一个登录页面重定向到谷歌。由于我已经使用 asp.net
在 ADAL.NET 2.x 中,我们使用以下代码使用 UserCredential 从 Azure AD 获取 token ,并且效果完美: var authContext = new Authe
我正在尝试通过 C# 控制台应用程序使用 Google Drive 和 Spreadsheets API。我想使用带有 FileDataStore 的用户凭据对这两项服务进行授权,这样我就不必在每次运
我在代码中使用 ADAL。我想要使用的一件事是使用不同的凭据,这样我就可以在控制台程序中针对 Azure AD 授权不同的用户。 Microsoft.IdentityModel.Clients.A
在过去的两天里,我一直在尝试从我的网站将视频上传到 YouTube。 VB 没有文档,.Net 也没有很多工作示例。 无论如何,我正在寻找以任何可能的方式将视频上传到 youtube。我尝试过 You
我的应用程序使用带有 OAuth 的 Google API Calendar V3,效果很好。它会在第一时间征求用户的同意。使用日历服务很容易创建、修改和删除日历事件。到目前为止,一切都很好! 现在我
我最近更新到了 Microsoft.IdentityModel.Clients.ActiveDirectory v3 的稳定版本。我读过here类UserCredential不再支持重载UserCre
我最近更新到了 Microsoft.IdentityModel.Clients.ActiveDirectory v3 的稳定版本。我读过here类UserCredential不再支持重载UserCre
我是一名优秀的程序员,十分优秀!