Javascript 使用jasmine进行http测试的错误方法(7)

Javascript 使用jasmine进行http测试的错误方法(7),javascript,angular,unit-testing,testing,jasmine,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&

我在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}/`);
}
错误

节点_模块/rxjs/internal/Observable.d.ts中的错误(14,60):错误 TS1183:无法在环境上下文中声明实现。 src/app/gif list/gif list.component.spec.ts(33,19):错误TS2339: 类型“Observable”上不存在属性“length”


我认为唯一有意义的测试是测试它是否返回一个可观察的。。。就这样

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

为什么要在前端代码中测试API?单元测试应该用于测试特定的代码单元。API应该在后端环境IMO中进行测试。我使用的是来自giphy的API,我只有前端。但是您只能在构建过程中检查一些东西。当您创建构建时,giphy可以更改API,而您的单元测试没有任何意义。感谢您的帮助,但我有一个错误:预期未定义为相等。编写的测试只是验证指向返回可观察函数的函数指针。不太有用,因为ut总是有效的。要测试obsv的执行,请使用subscribe To it insteadmy函数返回它searchGif(term:string,limit:number):可观察
expect(results).toEqual(jasmine.any(Observable))