如何在单元测试中模拟AngularFire 2服务?

哈维尔·比亚努耶娃(Javier Villanueva)

我正在尝试使用AngularFire 2身份验证为示例Angular 2应用设置单元测试,该组件非常简单:

import { Component } from '@angular/core';
import { AngularFire, AuthProviders } from 'angularfire2';

@Component({
  moduleId: module.id,
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.css']
})
export class AppComponent {
  isLoggedIn: boolean;

  constructor(public af: AngularFire) {
    this.af.auth.subscribe(auth => {
      if (auth) {
        this.isLoggedIn = true;
      } else {
        this.isLoggedIn = false;
      }
    });
  }

  loginWithFacebook() {
    this.af.auth.login({
      provider: AuthProviders.Facebook
    });
  }

  logout() {
    this.af.auth.logout();
  }
}

我正在做的是在AngularFire中包装loginlogout方法,因此我在考虑使用模拟检查方法是否被调用,但是我不确定从哪里开始,我尝试在spec文件中执行以下操作:

import { provide } from '@angular/core';
import { AngularFire } from 'angularfire2';
import {
  beforeEach, beforeEachProviders,
  describe, xdescribe,
  expect, it, xit,
  async, inject
} from '@angular/core/testing';
import { AppComponent } from './app.component';

spyOn(AngularFire, 'auth');

beforeEachProviders(() => [
  AppComponent,
  AngularFire
]);

describe('App Component', () => {
  it('should create the app',
    inject([AppComponent], (app: AppComponent) => {
      expect(app).toBeTruthy();
    })
  );

  it('should log user in',
    inject([AppComponent], (app: AppComponent) => {
      expect(app.fb.auth.login).toHaveBeenCalled();
    })
  );

  it('should log user out',
    inject([AppComponent], (app: AppComponent) => {
      expect(app.fb.auth.logout).toHaveBeenCalled();
    })
  );
});

但是我不确定如何模拟loginlogout方法,因为它们是auth属性的一部分,是否可以模拟auth以及返回loginlogout方法?

初级

在此片段中:

beforeEach(() => addProviders([
  AppComponent,
  AngularFire
]);

您设置(或覆盖)将在测试中使用的提供程序。

话虽如此,您可以创建一个不同的类(如果需要的话),并使用{ provide: originalClass, useClass: fakeClass }表示法提供它,而不是AngularFire实际的类。

像这样的东西:

class AngularFireAuthMock extends AngularFireAuth {           // added this class
  public login() { ... }
  public logout() { ... }
}

class AngularFireMock extends AngularFire {                   // added this class
  public auth: AngularFireAuthMock;
}

beforeEach(() => addProviders([
  AppComponent,
  { provide: AngularFire, useClass: AngularFireMock }         // changed this line
]);

AngularFire在测试中旨意是AngularFireMock秒。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在单元测试中模拟AngularFire 2服务?

来自分类Dev

如何在Spring单元测试中快速模拟服务?

来自分类Dev

我该如何在React组件中模拟服务以隔离单元测试?

来自分类Dev

在单元测试中模拟服务

来自分类Dev

如何在Jasmine中单元测试服务相关功能?

来自分类Dev

如何在 ng2 单元测试中模拟 @Attribute 装饰器字符串提供程序?

来自分类Dev

如何在Angular 2中对指令进行单元测试?

来自分类Dev

如何模拟$ window进行单元测试AngularJS服务?

来自分类Dev

在单元测试中模拟AngularJS服务的正确方法?

来自分类Dev

AngularJS中的单元测试-模拟服务和承诺

来自分类Dev

在Angular单元测试中模拟异步Web服务

来自分类Dev

在角度单元测试中模拟$ location服务

来自分类Dev

模拟服务中的方法进行单元测试

来自分类Dev

在 Symfony 3.4 的单元测试中模拟服务

来自分类Dev

Angular Karma单元测试:如何在业力配置中而不是在所有测试规范中注入模拟服务

来自分类Dev

angular2-如何在http.post单元测试上模拟错误

来自分类Dev

如何在vs“单元测试项目”中测试wcf rest服务?

来自分类Dev

如何在vs“单元测试项目”中测试wcf rest服务?

来自分类Dev

使用单元测试模拟服务类

来自分类Dev

如何在功能测试中模拟Symfony 2服务?

来自分类Dev

如何在AngularJS中组织单元测试和e2e测试?

来自分类Dev

如何在Symfony2中分离单元测试和功能测试?

来自分类Dev

如何在Symfony2中分离单元测试和功能测试?

来自分类Dev

如何在 Angular 2 单元测试中测试共享组件的方法?

来自分类Dev

模拟要在Angular单元测试中订阅的模拟服务的Subject属性

来自分类Dev

如何在AngularJS中对$ location服务search()方法进行单元测试?

来自分类Dev

如何在Cordapp中对服务和控制器(kotlin)进行单元测试?

来自分类Dev

如何在Mule单元测试中伪造SFTP服务器?

来自分类Dev

如何在指令测试中模拟服务?

Related 相关文章

  1. 1

    如何在单元测试中模拟AngularFire 2服务?

  2. 2

    如何在Spring单元测试中快速模拟服务?

  3. 3

    我该如何在React组件中模拟服务以隔离单元测试?

  4. 4

    在单元测试中模拟服务

  5. 5

    如何在Jasmine中单元测试服务相关功能?

  6. 6

    如何在 ng2 单元测试中模拟 @Attribute 装饰器字符串提供程序?

  7. 7

    如何在Angular 2中对指令进行单元测试?

  8. 8

    如何模拟$ window进行单元测试AngularJS服务?

  9. 9

    在单元测试中模拟AngularJS服务的正确方法?

  10. 10

    AngularJS中的单元测试-模拟服务和承诺

  11. 11

    在Angular单元测试中模拟异步Web服务

  12. 12

    在角度单元测试中模拟$ location服务

  13. 13

    模拟服务中的方法进行单元测试

  14. 14

    在 Symfony 3.4 的单元测试中模拟服务

  15. 15

    Angular Karma单元测试:如何在业力配置中而不是在所有测试规范中注入模拟服务

  16. 16

    angular2-如何在http.post单元测试上模拟错误

  17. 17

    如何在vs“单元测试项目”中测试wcf rest服务?

  18. 18

    如何在vs“单元测试项目”中测试wcf rest服务?

  19. 19

    使用单元测试模拟服务类

  20. 20

    如何在功能测试中模拟Symfony 2服务?

  21. 21

    如何在AngularJS中组织单元测试和e2e测试?

  22. 22

    如何在Symfony2中分离单元测试和功能测试?

  23. 23

    如何在Symfony2中分离单元测试和功能测试?

  24. 24

    如何在 Angular 2 单元测试中测试共享组件的方法?

  25. 25

    模拟要在Angular单元测试中订阅的模拟服务的Subject属性

  26. 26

    如何在AngularJS中对$ location服务search()方法进行单元测试?

  27. 27

    如何在Cordapp中对服务和控制器(kotlin)进行单元测试?

  28. 28

    如何在Mule单元测试中伪造SFTP服务器?

  29. 29

    如何在指令测试中模拟服务?

热门标签

归档