gpt4 book ai didi

angular - 使用 firebase auth 的单元测试 Angular 服务?

转载 作者:行者123 更新时间:2023-12-02 16:09:36 25 4
gpt4 key购买 nike

我已经在返回 Promise 的 Angular 上设置了简单的身份验证服务:

import * as firebase from 'firebase/app';

@Injectable({
providedIn: 'root'
})

export class AuthService {

doLogin(val:{email:string, password:string}) {
return new Promise<any>((resolve, reject) => {
firebase
.auth()
.signInWithEmailAndPassword(val.email, val.password)
.then(
res => resolve(res),
err => reject(err)
);
});
}

}

如何正确地对服务实现单元测试?我目前实现此目的的方式是使用 jasmine 进行单元测试,通过提供真实的用户凭据(这不是一件好事,因为我要将代码推送到 github)并使用该凭据直接调用 doLogin 方法。

describe('AuthService', () => {
let service: AuthService;
const userCreds = {
email: 'somerealemail@somedomain.com',
password: 'somerealpassword'
};

beforeEach(() => TestBed.configureTestingModule({
imports: [FirebaseModule],
providers: [AuthService]
}));

beforeEach(() => {
service = TestBed.get(AuthService);
});

it('should logged in', async((done) => {
service.doLogin(userCreds).then(
res => {
expect(res).toBeTruthy();
}
)
}));

抱歉,如果代码很困惑,我对 Angular 和 jasmine 都是全新的,非常感谢任何建议或想法,谢谢

最佳答案

我强烈建议您重构代码以使用依赖项注入(inject)。请参阅文档 here

然后,您可以将 Firebase 作为外部依赖项注入(inject),这将使模拟变得更加容易,因此测试也更加容易。请参阅 The official Angular library for Firebase 中有关如何使用 Firebase 执行此操作的示例

完成此操作后,您就可以以相当简单的方式对其进行测试。这是 Stackblitz 中的示例测试 Firebase 服务。

关于angular - 使用 firebase auth 的单元测试 Angular 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55235078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com