Угловой юнит-тест, макет свойства провайдера - PullRequest
0 голосов
/ 15 октября 2018

Я действительно новичок в модульном тестировании, особенно в Angular.У меня проблема, в моем TestBed.configureTestingModule у меня есть провайдер, у которого есть частный получатель, и этот получатель опирается на пользовательскую универсальную службу, которая получает значение из файла.Как я могу издеваться над этим значением, не полагаясь на пользовательскую службу, которая ищет определенный файл?Допустим, получатель url.Я пытался с

{
   provide: SomeService, useValue: {
     url: 'www.test.com'
   }
},

Но тогда я получаю ошибку в моем компоненте this.someService.SomeFunction is not a function, что мне не хватает?

1 Ответ

0 голосов
/ 16 октября 2018

Предполагая, что с поставщиком вы имеете в виду Сервис, элегантным способом было бы использовать инструмент жасмин spyOnProperty .

Примерно так, когда у вас есть частный получатель

@Injectable()
export class TestService {

  private _url: string = 'www.random.com';

  constructor() { }

  private get url(): string {
    return this._url;
  }
}

и протестируй вот так

describe('TestService', () => {

  let testService: TestService;

  beforeEach(() => {

    TestBed.configureTestingModule({
        imports: [ ],
        providers: [ TestService ]
    });

    testService = TestBed.get(TestService);

  });

  it('tests getter with property Spy', () => {
    expect(testService.url).toEqual('www.random.com');

    const urlSpy = spyOnProperty(testService, 'url', 'get').and.returnValue('www.happy.com');

    expect(testService.url).toEqual('www.happy.com');

  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...