Angular 9 TestBed.inject и переопределения поставщика - PullRequest
3 голосов
/ 18 февраля 2020

При использовании переопределения провайдера, какая альтернатива следующему теперь, когда TestBed.get устарел в Angular 9

TestBed.configureTestingModule({
  providers: [{ provide: MyClass, useClass: MyStub}]
});

const obj : MyStub = TestBed.get(MyClass);

Это действительно так или есть лучший способ?

const obj : MyStub = TestBed.inject(MyClass) as unknown as MyStub;

1 Ответ

3 голосов
/ 18 февраля 2020

Для всех намерений и целей ваш MyStub должен, по крайней мере, быть Partial или классом, расширяющим класс, который он пытается смоделировать, в противном случае ваши тесты вроде бы «неправильные», так что если это так, вы можете просто сделать:

const obj = TestBed.inject(MyClass);

Если у вас как-то будут разные свойства или разные сигнатуры функций в вашей заглушке, вы также можете сделать это:

const obj = TestBed.inject<MyStub>(MyClass as any);

Но, вообще говоря, ваши издевательства должны (частично) делиться та же подпись, что и предмет, над которым она издевается, что также означает, что нет необходимости в касте

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