如何使用mockbfirebase进行angular2打字脚本单元测试

How do I use mockfirebase for my angular2 typescript unit test?

本文关键字:脚本 单元测试 angular2 何使用 mockbfirebase 进行      更新时间:2023-09-26

如何使用mockfirebase进行firebase单元测试?

我在这个单元测试中使用了typescript和angular2。

这是我的一个测试,我想把它从firebase:改为mockbfirebase:

 import { it, iit, describe, expect, inject, injectAsync, beforeEachProviders, fakeAsync, tick } from 'angular2/testing';
 import { FirebaseService } from '../app/firebase-service';
 describe('Firebase Service Calls', () => {
      it('log out user from Firebase', () => {
          let ref = new Firebase("https://markng2.firebaseio.com");
          let service = new FirebaseService();
          spyOn(service.ref, 'unauth');
          service.logOut();
          expect(service.ref.unauth).toHaveBeenCalled();
      })
 });

我想更改这一行:"let ref=new Firebase("https://markng2.firebaseio.com");"

Firebase类/函数一样,MockFirebasewindow上可用。

您可以在beforeEach函数或夹具中使用MockFirebase.override()

describe('Firebase Service Calls', () => {
      beforeEach(() => MockFirebase.override());
      it('log out user from Firebase', () => {
          let ref = new Firebase("https://markng2.firebaseio.com");
          ref.unauth();
          ref.flush(); // flush out the async action
          expect(ref.getUser()).toEqual(null);
      });
 });

当用户通过身份验证时,调用ref.getUser()将返回当前用户。当用户注销时,上面的测试检查ref.getUser()的返回值是否为null。

查看有关身份验证和MockFirebase的文档。