【问题标题】:How to return mocked Data in Observable?如何在 Observable 中返回模拟数据?
【发布时间】:2016-10-21 15:49:21
【问题描述】:

假设我们在一个返回 Observable 的服务中有这个方法:

getSearchResults(request: LocationSearchRequest){
      return this.http.get(this.getApiUrl(request))
            .map(res => <LocationSearchResponse> res.json())    
            .catch(this.handleError);    
}

如何修改此代码以返回模拟数据 ratehr 然后发出实际的 GET 请求?

import { MOCKEDDATA } from './mocked-data';

这不是一个重复的问题。这与测试无关,jasmine和angualr2测试api。

【问题讨论】:

  • 解决方案是使用 Observable.of();为什么它被标记为重复?这与测试无关,jasmine 和 angular2 测试 api。

标签: angular rxjs observable


【解决方案1】:

Xavi 的回答很好也很简单,但它对我不起作用 - 我这样调整它:

import { of } from 'rxjs';

然后:

return of(MOCKEDDATA);

希望这对其他人也有帮助!

【讨论】:

  • 这是新版本 rxjs 中的语法
【解决方案2】:

前段时间我也有同样的话题。也可以使用方法:

Observable.create()

通过下面的代码解决了(使用打字稿):

getElementTemplateNames() : Observable<string[]> {
let names : string[] = MockedElementData.getNames();
return Observable.create( observer => {
    observer.next(names);
    observer.complete();
});}

MockedElementData 保存数据。

Observable 的导入语句是:

import { Observable } from "rxjs/Observable";

【讨论】:

    【解决方案3】:

    你可以这样做:

    Observable.of(MOCKEDDATA)

    您还可以添加延迟:

    Observable.of(MOCKEDDATA).delay(1000)

    【讨论】:

    【解决方案4】:

    我用下面的代码解决了这个问题。

     this.treeService
              .getData()
              .pipe(takeUntil(this.destroy$))
              .subscribe(
                (fa) => {              
                  this.Items = fa.map(f => new TreeviewItem(f));                          
                  console.log('this.Items', this.Items);              
                }
              );
    
    

    考虑到您的树节点需要在所有级别中都有。 文字:“文字” 价值:“价值”

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多