2015-12-02 77 views
5

有谁知道如何使用角度2来测试基本火力点添加项目的基本单元测试。使用角度2的火力点添加单元测试

我使用打字稿,而不是基本的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(); 
    }) 

}); 

这是我运行测试时得到的错误:

enter image description here

+0

似乎像一个配置问题 – AngularM

回答

2

三个步骤开始测试。

  1. Setup your testing environment。 Angular 2文档有很好的指导。
  2. 编写您的代码。
  3. 编写测试。

比方说,你创建一个名为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并用茉莉花方法来测试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创建所需的任何功能模拟。

+0

嗨大卫,我已经添加了我的代码上面,例如我的测试和我测试的代码。 我似乎得到一个安装问题。 – AngularM

+0

看来你并没有包含所有的文件。这个问题虽然不是关于建立。我们尽量避免将一个问题转化为多个问题。如果您有其他问题,请解决此问题并开始另一个问题。 –

+0

好的没有probs。我现在要创建另一个问题。 这是下一个问题的链接: http://stackoverflow.com/questions/34047379/unit-tests-for-firebase-files-not-included-issue – AngularM