Тестирование служб Angular, возвращающих «не удается прочитать ‘коллекцию’ свойств undefined»

#angular #jasmine #karma-runner

#angular #jasmine #карма-раннер

Вопрос:

Я пытаюсь протестировать следующий метод в UserService:

   hello() {
    console.log('hello');
    return 1;
  }
  

Но продолжаю получать следующую ошибку:

 TypeError: Cannot read property 'collection' of undefined
    at <Jasmine>
    at UserService../src/app/_services/user.service.ts.UserService.getNumberOfUsers (http://localhost:9876/_karma_webpack_/webpack:/src/app/_services/user.service.ts:32:21)
    at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/webpack:/src/app/_services/user.service.spec.ts:31:21)
    at ZoneDelegate../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:388:1)
    at ProxyZoneSpec.push../node_modules/zone.js/dist/zone-testing.js.ProxyZoneSpec.onInvoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-testing.js:288:1)
    at ZoneDelegate../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:387:1)
    at Zone../node_modules/zone.js/dist/zone.js.Zone.run (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:138:1)
    at runInTestZone (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-testing.js:509:1)
    at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-testing.js:524:1)
    at <Jasmine>
  

Мой тестовый код выглядит следующим образом:

 import { UserService } from './user.service';
import { TestBed } from '@angular/core/testing';
import { environment } from 'src/environments/environment.prod';
import { AngularFireModule } from '@angular/fire';

describe('UserService unit tests', () => {
  let userService: UserService;

  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [AngularFireModule.initializeApp(environment)],
      providers: [
        { provide: UserService }
      ]
    });

    userService = TestBed.get(UserService);
  });

  it('should be created', () => {
    userService.hello();
  });
});
  

Как я могу это решить?

Комментарии:

1. Можете ли вы увидеть console.log('hello'); значение при запуске ng test ?

2. Пожалуйста, поделитесь источником вашего пользовательского сервиса.