首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用茉莉花/卡玛用Angular5,ngrx5测试ngrx/效应?

如何用茉莉花/卡玛用Angular5,ngrx5测试ngrx/效应?
EN

Stack Overflow用户
提问于 2018-06-13 15:29:58
回答 1查看 777关注 0票数 1

这是我需要测试的文件。我正在使用Angular5 (^5.2.0)、ngrx5 (^5.2.0),目前我的注意力集中在一些效果服务上。这是我目前需要测试的代码。但我不知道如何正确地实现它,我做了一些尝试,但它们只是失败。你们有小费吗?谢谢

代码语言:javascript
复制
import { Injectable } from '@angular/core';
import { Actions, Effect } from '@ngrx/effects';
import { FETCH_DATA } from '../reducers/data.reducer';
import { DataService } from './data.service';
import { Subject } from 'rxjs/Subject';
import { ActionWithPayload } from '../types/app-actions';

@Injectable()
export class AutoCompleteEffects {
  public autoComplete$ = new Subject<{
    type: string;
    payload: { results: string[]; searchValue: string };
  }>();

  @Effect()
  getData$ = this.actions$.ofType(FETCH_DATA).switchMap((action: ActionWithPayload) => {
    return this.data
      .getData(action.payload)
      .map(results => ({
    type: 'FETCHED_DATA',
    payload: { results, searchValue: action.payload }
      }))
      .catch(() =>
    Observable.of({
      type: 'FETCHED_DATA',
      payload: { results: [], searchValue: action.payload }
    })
      );
  });


  constructor(
    private actions$: Actions,
    private data: DataService,
  ) {
    this.getData$.subscribe(action => this.autoComplete$.next(action));
  }

  public getAutoCompleteEffects() {
    return this.autoComplete$.asObservable();
  }
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-13 18:04:32

有几件事你需要拥有

  1. 使用provideMockActions遵循ngrx效果测试设置(参见)
  2. 模拟DataService并注入它

在那之后,这只是一个不同动作的测试

代码语言:javascript
复制
it('should suggest auto complete values', () => {
  actions = of([<test-actions>]);
  const expectedEffects = of([<expected-actions-from-effects>]);

  expect(TestBed.get(AutoCompleteEffects).getData$).toBeObservable(expectedEffects);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50841046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档