我的功能如下:
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
});
问题是虽然这个测试应该是异步的,但我不知道如何挂钩异步执行的执行。 我想在测试中订阅事件发射器,但不能保证首先调用哪个订阅回调,所以这听起来不错。
有什么想法吗?