#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();