使用 Angular 2 添加 Firebase 的单元测试
Posted
技术标签:
【中文标题】使用 Angular 2 添加 Firebase 的单元测试【英文标题】:Unit tests for firebase add using angular 2 【发布时间】:2016-03-06 17:50:40 【问题描述】:有谁知道如何使用 Angular 2 进行基本单元测试来测试基本的 Firebase 添加项。
我在代码中使用 typescript 而不是基本的 javascript
这是我正在测试的:
export class AppComponent
ref: Firebase;
refUsers: Firebase;
refProfiles: Firebase;
constructor()
this.ref = new Firebase("https://markng2.firebaseio.com");
this.refUsers = new Firebase("https://markng2.firebaseio.com/users");
this.refProfiles = new Firebase("https://markng2.firebaseio.com/profiles");
public addUser(newUser: Object): void
this.refUsers.push(newUser, ()=>
);
这是我目前的测试:
import it, iit, describe, expect, inject, injectAsync, beforeEachProviders, fakeAsync, tick from 'angular2/testing';
import AppComponent from '../app/app';
describe('AppComponent', () =>
it('saves an item to Firebase', () =>
let refUsers = new Firebase('');
let service = new AppComponent();
spyOn(service.refUsers, 'push');
service.addUser( item: true );
expect(service.refUsers.push).toHaveBeenCalled();
)
);
这是我在运行该测试时遇到的错误:
【问题讨论】:
好像是配置问题 【参考方案1】:开始测试的三个步骤。
-
Setup your testing environment。 Angular 2 文档对此有很好的指导。
编写您的代码。
编写测试。
假设您创建了一个名为 DataService
的类:
/// <reference path="typings/firebase/firebase.d.ts" />
export class DataService
ref: Firebase;
constructor(theRef: Firebase)
this.ref = theRef;
add(object: any)
this.ref.push(object);
要对其进行测试,您可以导入DataService
并使用 Jasmine 方法来测试 add 方法。
import DataService from './data-service';
describe('DataService', () =>
it('saves an item to Firebase', () =>
let ref = new Firebase('');
let service = new DataService(ref);
// create a spy to use if push is called
spyOn(service.ref, 'push');
service.add( item: true );
// expect that push was called
expect(service.ref.push).toHaveBeenCalled();
)
);
测试 Firebase 方法的关键就是监视它们。您无需测试 Firebase 是否有效,只需您的代码正确调用 Firebase。
这里的问题是您在单元测试中使用了完整的 Firebase SDK。理想情况下,您希望使用模拟库,这样您就可以从 Firebase SDK 为您需要的任何功能创建模拟。
【讨论】:
嗨大卫,我已经在上面添加了我的代码,例如我的测试和我正在测试的代码。我似乎遇到了设置问题。 您似乎没有包括所有文件。这个问题虽然不是关于设置。我们尽量避免将一个问题变成多个问题。如果您还有其他问题,请解决这个问题并开始另一个问题。 好的,没有问题。我现在将创建另一个问题。这是下一个问题的链接:***.com/questions/34047379/…以上是关于使用 Angular 2 添加 Firebase 的单元测试的主要内容,如果未能解决你的问题,请参考以下文章
使用 Angular 和 Firebase 登录后获取用户配置文件
如何使用 Firebase 功能部署 Angular 9 通用应用程序
使用@angular/fire@6.0.3 无法访问firebase.firestore.FieldValue.serverTimestamp()
路由时超时。 Angular 9 通用 + Firebase