Угловой 2, тест трубы с наблюдаемой не имеет доступа к преобразованию - PullRequest
1 голос
/ 19 апреля 2019

Я пишу юнит-тест для моей трубы. Канал использует пользовательский сервис для запроса данных API. Следуя схеме здесь: https://medium.com/google-developer-experts/angular-2-testing-guide-a485b6cb1ef0 и несколько других источников, которые я собрал:

describe('UserDataPipe', () => {

  let pipe;
  const userSvcMock = jasmine.createSpyObj('UserService', ['getUser']);

  beforeEach(() => TestBed.configureTestingModule({
    declarations: [UserDataPipe],
    providers: [
      { provide: UserService, useValue: userSvcMock }
    ]
  }));

  beforeEach(inject([UserService], p => {
    pipe = p;
  }));

  it('create an instance', () => {
    expect(pipe).toBeTruthy();
  });

  it('should return user display name (firstName lastName)', () => {
    console.log(pipe);
  });
});

Однако, pipe не имеет доступа к методу transform, с которым мне нужно проверить. Он имеет доступ к фактической наблюдаемой, вызываемой в методе transform, getUser.

Было предложено использовать этот метод, но это дает тот же результат:

 let pipe;
  beforeEach(() => {
    const userService = jasmine.createSpyObj('UserService', ['getUser']);
    pipe = new UserDataPipe(userService);
  });

Труба:

@Pipe({
  name: 'userData'
})
export class UserDataPipe implements PipeTransform {

  constructor(private userService: UserService) {}

  transform(value: string, userProp?: any): any {
    let userData;
    return this.userService.getUser(value).pipe(
      map(res => {
        userData = res;
        if (!userProp) {
          return userData;
        } else {
          const prop = userProp === 'displayName' ? `${userData.firstName} ${userData.lastName}` : res[userProp];
          return prop;
        }
      })
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...