使用Jasmine组件和服务进行测试

时间:2018-08-27 23:58:47

标签: angular jasmine

我想知道如何在Angular中测试以下代码?

create() {
        this.loading = true;
        const email = this.email.value.originurl;

        this.emailService.create(data).subscribe((id) => {
          this.setID(id);
          this.info();
          this.loading = false;
        });
      }

1 个答案:

答案 0 :(得分:0)

这只是一种方法,根据您想早点发现哪些错误,有很多测试要测试

此行上的第一个重构代码,提取方法

          const email = getEmail();

这是为此的新方法,以便我们以后可以对此进行监视

       getEmail():string {
       return this.email.value.originurl;
      }

然后在.SPEC文件中创建一个模拟服务

    let  mockEmailService = jasmine.createSpyObj(['create']);

然后在测试台中,在此处注意提供者的值

      TestBed.configureTestingModule({
  declarations:[Component1, Component2],
  imports: [HttpClientTestingModule,SomeModule],

  providers: [
    {provide: EmailService, useValue: mockEmailService}
  ]
  ...

  ....
    });
  }));

然后进行单元测试

   it('should call email service create on create() at least once', () => {

  //Arrange

  spyOn(component,'getEmail').and.returnValue('mockemail@emailer.com');
  mockEmailService.create.and.callThrough();

  //Act
  component.create();
  //Assert
  expect(mockEmailService.create).toHaveBeenCalledTimes(1);


});

这只是一个示例,再次只是为了向您展示您可以在FIRST做些什么。随时更改此设置,并熟悉模拟,间谍和测试平台