ngxs:如何测试动态选择器

ngxs: How to test dynamic selectors

我遵循了关于测试 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 的第一个参数,状态自动传入,我不知道应该如何测试这个选择器。

好像是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']);
});