javascript - 如何使用模拟 Firebase 进行 Angular 2 TypeScript 单元测试?

标签 javascript unit-testing typescript firebase angular

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

我使用 typescript 和 angular2 进行此单元测试。

这是我想从 firebase 更改为 mockfirebase 的测试之一:

 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 类/函数一样,MockFirebase窗口上可用。

您可以在 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。

Check out the documentation on authentication and MockFirebase.

关于javascript - 如何使用模拟 Firebase 进行 Angular 2 TypeScript 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34085020/

相关文章:

javascript - 使用谷歌脚本创建折线图 - 谷歌表作为数据源

javascript - 如何使用 JQUERY 在 textarea 中添加值

java - 如何创建 ArchUnit 规则来验证引发的所有异常是否继承自特定的自定义异常?

php - 在单元测试中使用自动递增键删除测试行

angularjs - 设置 $invalid 和 $error 不会使表单无效

javascript - Array.sort(compareFn) 返回一个数字。工作 Plunker 演示返回 bool 值?

javascript - 在 threejs 中加载到 Material 上的 svg 的每个 <g> 标签上的鼠标事件

angularjs - Jasmine:如何在浏览器中查看报告?

javascript - 具有 'as' 属性的通用 React TypeScript 组件(能够渲染任何有效的 dom 节点)

javascript - 从下拉菜单中选择项目