在服务中测试异步功能时出错(超过2000ms超时)

时间:2017-01-20 00:37:20

标签: angular jasmine mocha sinon

我的服务包含以下详细信息:

class MyService {
   myFunction(param){
        return Observable.create(obs => {
             callsDBfunc(param, (err, res) => {
                  if(err)
                      obs.error(err);
                  else
                      obs.next(res);
             });
        });
   }
}

当我试图测试它时,我收到一个错误:

  

错误:超过2000毫秒的超时。确保正在进行done()回调   在这个测试中调用。

我的测试如下:

it('test signup()', (done) => {
     authService = new AuthService();
     let credentials = {username: '1234', password: '1234'};
     let spyVMAddUser = spy(VM_Users_AddUser, 'call');
     authService.signup(credentials).subscribe(data => {
         expect(data).to.eql(credentials);
         done();
     });
     assert.calledOnce(spyVMAddUser);
     spyVMAddUser.restore();
});

我尝试过(1)将observale转换为Promise,然后像.then(完成,完成)一样将链接完成到最后。 (2)尝试使setTimeOut(20000)得到相同的错误。

(3)我甚至试图将该方法存根,而不是使用以下代码进行间谍处理并得到相同的错误。

stub(VM_Users_AddUser, 'call').withArgs(credentials).returns(credentials);

请帮忙。我试图在过去2-3天内解决此错误。

1 个答案:

答案 0 :(得分:-1)

发现了这个问题。我没有使用appro回调调用函数。当我使用yieldAaync(null,callbackSpy)调用stub时,它工作正常。