Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jasmine使用异步承诺测试angular 2服务_Angular_Typescript_Promise_Jasmine_Pouchdb - Fatal编程技术网

使用jasmine使用异步承诺测试angular 2服务

使用jasmine使用异步承诺测试angular 2服务,angular,typescript,promise,jasmine,pouchdb,Angular,Typescript,Promise,Jasmine,Pouchdb,所以,我在测试angular 2服务时遇到了一些问题。我的测试被标记为通过,但我在控制台中遇到以下错误: js:243未处理的承诺拒绝:在 没有当前规范,这可能是因为异步测试 超时;区域:ProxyZone;任务:承诺;值:错误: “expect”在没有当前规范时使用,这可能是 因为异步测试超时了 我的服务使用PockDB并返回一个承诺 这是我的服务: import { Injectable } from '@angular/core'; import { Project } from './p

所以,我在测试angular 2服务时遇到了一些问题。我的测试被标记为通过,但我在控制台中遇到以下错误:

js:243未处理的承诺拒绝:在 没有当前规范,这可能是因为异步测试 超时;区域:ProxyZone;任务:承诺;值:错误: “expect”在没有当前规范时使用,这可能是 因为异步测试超时了

我的服务使用PockDB并返回一个承诺

这是我的服务:

import { Injectable } from '@angular/core';
import { Project } from './project';
declare var PouchDB:any;

@Injectable()
export class ProjectService {

  db: any;

  constructor() {
    if(navigator.vendor && navigator.vendor.indexOf('Apple') > -1){
      this.db = new PouchDB('projects', {adapter: 'fruitdown'});
    }else{
      this.db = new PouchDB('projects');
    }   
  }

  saveProject(project:Project): Promise<any>{
    return this.db.put(project);
  }

  getProjects(limit:number,skip:number): Promise<any> {
    return this.db.allDocs({
      include_docs: true,
      attachments: false,
      descending: true,
      limit: limit,
      skip: skip
    });
  }

}
…好吧,我已经摆弄这个有一段时间了。我可能需要使用fakeAsync和tick()??fakeAsync感觉不对,tho。看起来我应该在.finally()块中调用done(),但是.finally()不是一个方法。我刚开始和Jasmine一起测试承诺,所以也许我错过了一些明显的东西?如果您知道任何使用angular2、jasmine和promises的代码(或示例代码);那会有帮助的

我不想嘲笑你,并回报我自己的承诺


此测试应失败,因为响应!=项目没有,但我的控制台中有一个错误。救命啊

service.saveProject(project)返回的承诺。然后(
不等待,请从方法中删除
async
,并从测试中返回此承诺,或者在测试中等待承诺结果

it('should be able to CREATE a new project (async)',
    async (done) => {
      let response = await service.saveProject(project)
      expect(response).toEqual(project);
  });
it('should be able to CREATE a new project (async)',
    async (done) => {
      let response = await service.saveProject(project)
      expect(response).toEqual(project);
  });