Art*_*ary 3 observable rxjs angular
假设我们在返回Observable的服务中具有此方法:
getSearchResults(request: LocationSearchRequest){
return this.http.get(this.getApiUrl(request))
.map(res => <LocationSearchResponse> res.json())
.catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)
如何修改此代码以返回模拟的数据费率,然后进行实际的GET请求?
import { MOCKEDDATA } from './mocked-data';
Run Code Online (Sandbox Code Playgroud)
这不是重复的问题。这与测试,茉莉和angualr2测试api没有关系。
Joe*_*mer 15
Xavi的回答很好也很简单,但它对我不起作用 - 我像这样调整了它:
import { of } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)
进而:
return of(MOCKEDDATA);
Run Code Online (Sandbox Code Playgroud)
希望这对其他人也有帮助!
小智 8
我前段时间有同样的话题。也可以使用以下方法:
Observable.create()
以下代码(使用打字稿)解决了该问题:
getElementTemplateNames() : Observable<string[]> {
let names : string[] = MockedElementData.getNames();
return Observable.create( observer => {
observer.next(names);
observer.complete();
});}
Run Code Online (Sandbox Code Playgroud)
MockedElementData保存数据。
Observable的导入语句为:
import { Observable } from "rxjs/Observable";
Run Code Online (Sandbox Code Playgroud)
小智 7
你可以做:
Observable.of(MOCKEDDATA)
您还可以添加延迟:
Observable.of(MOCKEDDATA).delay(1000)