ngxs: как тестировать динамические селекторы - PullRequest
0 голосов
/ 29 августа 2018

Я следовал официальной документации по тестированию селекторов 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);
  });
}

Единственный параметр, который он получает, - это идентификатор, по которому он выбирается, но не состояние. Состояние автоматически передается путем указания его в качестве первого параметра для createSelector, и я не знаю, как мне проверить этот селектор.

1 Ответ

0 голосов
/ 11 января 2019

Похоже, что документация обновлена ​​:

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']);
});
...