ngxs:如何测试动态选择器

时间:2018-08-29 06:23:43

标签: unit-testing testing selector ngxs

我遵循了有关测试ngxs选择器(https://ngxs.gitbook.io/ngxs/recipes/unit-testing#testing-selectors)的官方文档,但是并未涵盖如何对使用createSelector创建的动态选择器进行单元测试。

我的普通选择器只是将状态作为参数,所以我可以通过传递准备好的状态并比较输出来轻松地对其进行测试。

@Selector()
static nachweise(state: NachweisStateModel) {
  return state.nachweise;
}



//Setup state   
const state = {...};

//Compare expectations
expect(NachweisState.nachweise(state)).toEqual(...);

我的动态选择器如下所示:

@Selector()
static nachweisById(id: string) {
  return createSelector([NachweisState], state => {
    return state.nachweise.find(nachweis => nachweis.id === id);
  });
}

唯一获得的参数是其选择的ID,而不是状态。通过将状态指定为createSelector的第一个参数来自动传递状态,但我不知道如何测试该选择器。

1 个答案:

答案 0 :(得分:1)

似乎the documentation has been updated

it('should select requested animal names from state', () => {
  const zooState = {
    animals: [
      { type: 'zebra', name: 'Andy'},
      { type: 'panda', name: 'Betty'},
      { type: 'zebra', name: 'Crystal'},
      { type: 'panda', name: 'Donny'},
    ]
  };
  const value = ZooSelectors.animalNames('zebra')(zooState);
  expect(value).toEqual(['Andy', 'Crystal']);
});