В компоненте мы используем селектор ngrx для извлечения различных частей состояния.
public isListLoading$ = this.store.select(fromStore.getLoading);
public users$ = this.store.select(fromStore.getUsers);
fromStore.method
создается с использованием метода ngrx createSelector
. Например:
export const getState = createFeatureSelector<UsersState>('users');
export const getLoading = createSelector(
getState,
(state: UsersState) => state.loading
);
Я использую эти наблюдаемые в шаблоне:
<div class="loader" *ngIf="isLoading$ | async"></div>
<ul class="userList">
<li class="userItem" *ngFor="let user of $users | async">{{user.name}}</li>
</div>
Я хотел бы написать тест, где я мог бы сделать что-то вроде:
store.select.and.returnValue(someSubject)
чтобы иметь возможность изменять значение объекта и проверять шаблон компонента с этими значениями.
Дело в том, что мы пытаемся найти правильный способ проверить это. Как написать мой метод "andReturn", так как метод select
вызывается два раза в моем компоненте с двумя разными методами (MemoizedSelector) в качестве аргументов?
Мы не хотим использовать реальный селектор и поэтому высмеиваем состояние, а использование реального селектора, похоже, не является правильным способом unit test (тесты не будут изолированы и будут использовать реальные методы для проверки поведения компонента).