angular ngrx Свойство «полезная нагрузка» не существует для типа «Действие» - PullRequest
1 голос
/ 12 марта 2020

Я просто обновляюсь с angular 8 до angular 9, и у меня есть некоторые проблемы, которые я не совсем понимаю. Я видел несколько постов, которые похожи на мою проблему, но не помогают мне что-то решить (возможно, из-за меня, а не решения, данного другими)

Итак, проблема в том, когда я запускаю ng test У меня есть эта ошибка: ошибка TS2339: Свойство «полезная нагрузка» не существует для типа «Действие».

The problem is on the spy.calls.allArgs()[1][0].payload.user;

Это похоже на связь между setUser и шпионом. Call.allArgs больше не существует.

login.service.spe c .ts

it('should get token', () => {
    const store = TestBed.inject(Store);
    const spy = spyOn(store, 'dispatch').and.callThrough();

    service.getToken('root', '', 'MY_DATABASE').subscribe(() => {
      expect(spy).toHaveBeenCalled();
      spy.calls.allArgs()[1][0]);
      const user: User = spy.calls.allArgs()[1][0].payload.user;
      expect(user.database).toBe('MY_DATABASE');
    });
  });

login.actions.ts

export class SetUser implements Action {
  readonly type = LOGIN_ACTION_TYPES.SET_USER;

  constructor(public payload: SetUserActionInterface) {}
}

interface SetUserActionInterface {
  user: User;
}

Может кто-нибудь помочь мне понять, в чем проблема в моем коде, пожалуйста?

1 Ответ

0 голосов
/ 12 марта 2020

Я не знаю, хороший ли это подход, но попробуйте:

// we are casting it to be of type SetUser where payload should be there.
const user: User = (spy.calls.allArgs()[1][0] as SetUser).payload.user;
...