ngxs: как тестировать динамические селекторы
Я следовал официальной документации по тестированию селекторов ngxs ( https://ngxs.gitbook.io/ngxs/recipes/unit-testing), однако в ней не описывается, как тестировать динамические селекторы, созданные с помощью 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
и я не знаю, как мне проверить этот селектор.
0 ответов
Похоже, что документация была обновлена:
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']);
});