В чем разница между testbed.get и инъекцией в тесте Angular 2/Jasmine?

Я новичок в тестировании Angular 2. Я пытаюсь выяснить, в чем разница в использовании testsbed.get() и просто использовать inject на тестовом уровне.

например:

beforeEach(() => {
    TestBed.configureTestingModule({
        providers: [SomeService]
    });

    const testbed = getTestBed();
    someService= testbed.get(SomeService);
  });
});

против

it('test service', inject([SomeService], (someService: SomeService) => {

Ответ 1

inject Вспомогательная функция исторически использовалась, поскольку AngularJS является альтернативой прямым вызовам инжектора. В Angular 1 необходимо было выполнить загрузку теста с помощью ngMock. Он полностью необязателен в Angular 2 и выше и является всего лишь предлагаемым способом для DI в тестах TestBed.

Это удобная обертка для testBed.get, которая позволяет избежать множественных вызовов testBed.get, аналогично:

const [foo, bar] = [Foo, Bar].map(TestBed.get);

Другие вспомогательные функции могут быть необязательно использованы в сочетании с inject, а именно async и fakeAsync.