javascript - Jasmine 的错误方法http测试( Angular 7)

标签 javascript angular unit-testing testing jasmine

我在 Angular 7 中有一个简单的应用程序,它使用 giphy api 发出 gif 列表请求,通知 gif 的数量和搜索词。

我想创建一个发出请求的测试,并验证 gif 列表的结果是否大于 0。

但是我有很多错误而且我不明白为什么

服务

private apiKey:string = "123";
private shortUrl:string = "//api.giphy.com/v1/gifs/search?q="

searchGif(term:string, limit:number):Observable<Gif[]> {
     let url:string = this.getUrl(term, limit);
     return  this.http.get<Gif[]>(`${url}/`);
}

测试

let service: GifSearchService;
let httpMock: any
let limit: number = 1;
let term: string = "dogs";

beforeEach(() => {
    httpMock = jasmine.createSpyObj('http', [ 'get', 'post' ]);
    service = new GifSearchService(httpMock);
});

it('Should return value when search for gifs', () => {
    let result = service.searchGif(term, limit);
    expect(result.length).toBeGreaterThan(0);
  });

错误

ERROR in node_modules/rxjs/internal/Observable.d.ts(14,60): error TS1183: An implementation cannot be declared in ambient contexts. src/app/gif-list/gif-list.component.spec.ts(33,19): error TS2339: Property 'length' does not exist on type 'Observable'.

最佳答案

我认为唯一有意义的测试是测试它是否返回一个 Observable...就像这样..

expect(results).toEqual(jasmine.any(Observable))

关于javascript - Jasmine 的错误方法http测试( Angular 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56261910/

相关文章:

unit-testing - 无法找到按钮来模拟点击 - 使用 Mocha、Chai、Enzyme 进行 React 单元测试

javascript - 按值复制数组

javascript - 将 express-flash 与 Handlebars 一起使用?

javascript - 如何在 javascript 中使用此 javascript new Date() 格式准确显示日期示例格式 "15-Apr-2012 10.12 AM"

angular - 步进器 - Angular Material - 无法读取未定义的属性 'markForCheck'

cordova - 在 Angular2(非 Ionic)Cordova 应用程序中检查 Internet 连接

css - :root selector is not working in the Angular component

.net - 测试设置中的 MsTest DeploymentItem OutputDirectory

javascript - 使用 Onclick 事件将 div 移动到容器左侧的任何选项

python - pytest(几乎)首先运行新测试