使用 angular 2 对 firebase 添加进行单元测试
Unit tests for firebase add using angular 2
有谁知道如何使用 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();
})
});
这是我 运行 测试时遇到的错误:
开始测试的三个步骤。
- Setup your testing environment。 Angular 2 文档对此有很好的指导。
- 编写代码。
- 编写测试。
假设您创建了一个名为 DataService
:
的 class
/// <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 方法来测试添加方法。
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 所需的任何功能创建模拟。
有谁知道如何使用 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();
})
});
这是我 运行 测试时遇到的错误:
开始测试的三个步骤。
- 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 方法来测试添加方法。
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 所需的任何功能创建模拟。