Как переназначить значение из mockStore.overrideSelector()?

#angular #unit-testing #ngrx

Вопрос:

У меня есть селектор, который возвращает логическое значение. Для моего модульного теста мне нужно проверить, когда это значение равно true или false.

По умолчанию в тестовой настройке у меня есть следующее:

 mockStore.overrideSelector(someSelector, true);
 

Мне нужно изменить значение селектора на false, однако, когда я попытаюсь выполнить следующее:

 mockStore.resetSelectors();
mockStore.overrideSelector(someSelector, false);
mockStore.refreshState();
spectator.detectChanges();
 

Селектор по — прежнему возвращает значение true.

Как я могу переназначить значение, ранее установленное методом переопределения селектора?

Ответ №1:

Как упоминалось в официальных документах, тестирование Ngrx

Чтобы обновить макет селектора для возврата другого значения, используйте метод SetResult() MemoizedSelector. Обновление фиктивного значения селектора не приведет к его автоматическому выделению. Чтобы вызвать излучение от всех селекторов, используйте метод mockStore.refreshState() после обновления требуемых селекторов.

Так что что-то вроде этого должно сработать…

 const mockSelector = mockStore.overrideSelector(someSelector, true);
...
...
mockSelector.setResult(false);
mockStore.refreshState();