Angular Unit Test 单元测试异步方法

Angular Unit Test 单元测试异步方法

点我测试对象代码.

import { AsyncService } from './async.service';

describe('AsyncService', () => {
  let service: AsyncService;

  beforeEach(() => {
    // TestBed.configureTestingModule({});
    // service = TestBed.inject(AsyncService);
    service = new AsyncService();
  });

  it (' test synchronousGet ', () => {
    var input:string = "测试同步方法";
    var expected:string = input;
    var output:string = service.getData(input);
    expect(output).toBe(expected);
  });


  // 测试异步方法--callback
  it (' test async by callback', (done:DoneFn) => {
    var input:string = "测试用callback形式实现的异步方法";
    var timeout=1000;
    var expected:string = `data=${input}, timeout=${timeout}`;
    var output:string = '';

    service.getDataAsyncByCallback(input, (data:string) => {
      output = data;
      expect(output).toBe(expected);

      done();
    }, timeout);

    // expect(output).toBe(expected);  因为是上面是异步方法,在这里肯定获取不到结果,挪到上面异步方法中断言
  });

  // 测试异步方法--Promise
  it (' test async by Promise', (done:DoneFn) => {
    var input:string = "测试用Promise形式实现的异步方法";
    var timeout=2000;
    var expected:string = `data=${input}, timeout=${timeout}`;
    var output:string = '';

    var promise = service.getDataAsyncByPromise(input, timeout);
    promise.then((out:string) => {
      output = out;
      expect(output).toBe(expected);

      done();
    });

  });

    // 测试异步方法--Rxjs
  it (' test async by Rxjs', (done:DoneFn) => {
    var input:string = "测试用Rxjs形式实现的异步方法";
    var timeout=3000;
    var expected:string = `data=${input}, timeout=${timeout}`;
    var output:string = '';

    var rxjsObservable = service.getDataAsyncByRxjs(input, timeout);
    rxjsObservable.subscribe((out:string) => {
      output = out;
      expect(output).toBe(expected);

      done();
    });
  });
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Punkerwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值