如何编写简单的测试来检查 Angular 2 中 MatDialog 的行为?

sammy333

我有以下组件:

@Component({
  selector: 'my-form',
  templateUrl: './my-form.component.html',
})
export class MyFormComponent implements OnInit {

  @Input('company') company: CompanyInfo;
  private config: ConfigInterface | null;

  constructor(private companyService: CompanyService, private something: Something, private dialog: MatDialog) {
  }
  ngOnInit() {
    ....
  }

  theMtehodWhichIWantToTest(company: string) {
    if (someTest.indexOf(domain)) {
      this.dialog.open(MyAllertComponent, {
        data: {
          title: 'blah',
        },
      });
    }
  }
}

我糟糕且失败的单元测试:

describe( 'MyFormComp', () => {
  it('should open MatDialog if email is from popular domain', () => {
    const dialog = {} as MatDialog;
    const comp = new MyComponent({} as CompanyService, {} as Something, dialog);
    comp.getCompanys(company);
    expect(dialog.open(AlertComponent));
  });
})

错误信息: TypeError: dialog.open is not a function

是的,我知道为什么我会收到此错误消息 - 我没有正确模拟对话框并且函数open不可用。有人可以告诉我如何open使用茉莉花(即如何正确模拟 MatDialog?)

我对 js 单元测试很陌生,所以,只是告诉我 google 什么对我来说不会很有帮助。

空虚

您可以使用 beforeEach 方法为您的组件依赖项创建间谍:

emailServiceSpy = jasmine.createSpyObj('EmailService', {});
somethingSpy = jasmine.createSpyObj('Something', {});
dialogSpy = jasmine.createSpyObj('MatDialog', ['open']);

然后为您的测试模块提供这些:

TestBed.configureTestingModule({
  declarations: [YourComponent],
  providers: [
    { provide: EmailService, useValue: emailServiceSpy },
    { provide: Something, useValue: somethingSpy },
    { provide: MatDialog, useValue: dialogSpy },
  ],
  imports: [],
}).compileComponents();

在您的测试中,您可以检查您的 spy-function 是否被调用:

expect(dialogSpy.open).toHaveBeenCalled();

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular中的* ngFor和MatDialog问题

来自分类Dev

如何修改Angular Material MatDialog的默认动画?

来自分类Dev

为什么MatDialog组件中的Angular Form非常慢?

来自分类Dev

Angular 2-如何编写ngIf来检查我是否已经在购物车中添加了东西?

来自分类Dev

Angular 2-如何编写ngIf来检查我是否已经在购物车中添加了东西?

来自分类Dev

Angular Jest测试打开MatDialog的组件-open不是函数

来自分类Dev

如何在Angular中重现Angular JS .broadcast()/ .on()行为?

来自分类Dev

测试angular-ui-router $ urlRouterProvider中的怪异行为

来自分类Dev

如何在 angular 8 中制作相同材质的 sidenav 行为?

来自分类Dev

在我的函数 ngDoCheck() Angular 中关闭我的 matDialog 时出现问题

来自分类Dev

matDialog 中的延迟加载模块

来自分类Dev

Angular2-表单行为异常中的自定义指令

来自分类Dev

Angular2-表单行为异常中的自定义指令

来自分类Dev

Angular 8 MatDialog等待结果继续

来自分类Dev

Angular NullInjectorError:MatDialog没有提供程序

来自分类Dev

在 Jasmine 中对 MatDialog 进行单元测试时,无法读取未定义的属性“afterClosed”

来自分类Dev

检查异常2种行为

来自分类Dev

检查异常2种行为

来自分类Dev

Angular 8如何从ngOnInit中的可观察值中获取价值以及它们的行为

来自分类Dev

如何在测试中启用敏捷行为?

来自分类Dev

如何在测试中启用敏捷行为?

来自分类Dev

Angular2:angular-http标头的行为很奇怪

来自分类Dev

Angular 2:如何在标签输入中编写嵌套循环

来自分类Dev

如何编写测试来检查Robolectric中的视图可见性是否消失?

来自分类Dev

如何在Angular 2 Jasmine中测试模型类型

来自分类Dev

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

来自分类Dev

通过OnInit在Angular 2中测试Promise

来自分类Dev

在Angular 2中测试routerLink指令

来自分类Dev

在angular2中检查权限

Related 相关文章

  1. 1

    Angular中的* ngFor和MatDialog问题

  2. 2

    如何修改Angular Material MatDialog的默认动画?

  3. 3

    为什么MatDialog组件中的Angular Form非常慢?

  4. 4

    Angular 2-如何编写ngIf来检查我是否已经在购物车中添加了东西?

  5. 5

    Angular 2-如何编写ngIf来检查我是否已经在购物车中添加了东西?

  6. 6

    Angular Jest测试打开MatDialog的组件-open不是函数

  7. 7

    如何在Angular中重现Angular JS .broadcast()/ .on()行为?

  8. 8

    测试angular-ui-router $ urlRouterProvider中的怪异行为

  9. 9

    如何在 angular 8 中制作相同材质的 sidenav 行为?

  10. 10

    在我的函数 ngDoCheck() Angular 中关闭我的 matDialog 时出现问题

  11. 11

    matDialog 中的延迟加载模块

  12. 12

    Angular2-表单行为异常中的自定义指令

  13. 13

    Angular2-表单行为异常中的自定义指令

  14. 14

    Angular 8 MatDialog等待结果继续

  15. 15

    Angular NullInjectorError:MatDialog没有提供程序

  16. 16

    在 Jasmine 中对 MatDialog 进行单元测试时,无法读取未定义的属性“afterClosed”

  17. 17

    检查异常2种行为

  18. 18

    检查异常2种行为

  19. 19

    Angular 8如何从ngOnInit中的可观察值中获取价值以及它们的行为

  20. 20

    如何在测试中启用敏捷行为?

  21. 21

    如何在测试中启用敏捷行为?

  22. 22

    Angular2:angular-http标头的行为很奇怪

  23. 23

    Angular 2:如何在标签输入中编写嵌套循环

  24. 24

    如何编写测试来检查Robolectric中的视图可见性是否消失?

  25. 25

    如何在Angular 2 Jasmine中测试模型类型

  26. 26

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

  27. 27

    通过OnInit在Angular 2中测试Promise

  28. 28

    在Angular 2中测试routerLink指令

  29. 29

    在angular2中检查权限

热门标签

归档