-1

我有这样的东西

  ngOnInit(): void {
    this.store.select('loggedUser').pipe(take(1))
      .subscribe(user => {
        this.loggedUser = user;
      });
  }

  it('should init well', () => {
    // GIVEN
    const store = spyOn(component.store, 'select').and.callThrough();
    // WHEN
    component.ngOnInit();
    // THEN
    expect(store).toHaveBeenCalledTimes(1);
    expect(component.loggedUser).toBe(initialState.loggedUser);
  });

对不起,我没有一些例子,但我什至不知道如何开始单元测试,谢谢

4

1 回答 1

0

使用明确定义您的选择器createSelector(您可能希望使用如下功能切片 - 请参阅https://ngrx.io/guide/store/selectors):


export interface AppState {
  user: UserState;
};

export interface UserState {
  loggedUser: string;
}

const selectUserState = (state: AppState) => state.user;
export const selectLoggedUser = createSelector(selectUserState, user => user.loggedUser);

现在只测试选择器,独立于您的组件:

it('loggedUser returns expected user', () => {
  const state = { 
    user: { loggedUser: 'Test User' }
  };
  expect(selectLoggedUser(state)).toBe('Test User');
});

于 2021-08-23T03:41:18.860 回答