测试eventEmitter订阅何时完成

时间:2016-05-20 09:48:46

标签: unit-testing angular jasmine eventemitter

我的功能如下:

  public openCamera = (obj) => {
    this._nativeCamera.getPicture()
      .subscribe((selectedImage) => {
        obj.avatar = selectedImage;
      });
  };

现在我想测试这个功能。

it('should pass', function(){
  let e = new EventEmitter();
  let obj = {};
  spyOn(mockNativeCamera,'getPicture').and.callFake(()=>e);
  sut.openCamera(obj);
  e.emit('Hello Dolly');
  expect(obj.avatar).toBe('Hello Dolly'); // This should be checked after subscription has finished, but happens synchronously and thus fails
});

问题是虽然这个测试应该是异步的,但我不知道如何挂钩异步执行的执行。 我想在测试中订阅事件发射器,但不能保证首先调用哪个订阅回调,所以这听起来不错。

有什么想法吗?

0 个答案:

没有答案