Jasmine it ('should create') завершается неудачно с Component, который создает FAILED TypeError: Невозможно прочитать свойство 'next' из неопределенного - PullRequest
0 голосов
/ 11 октября 2019

мой компонент получает данные из хранилища

@Component({
  selector: 'iomt-user',
  templateUrl: './user.component.html',
  styleUrls: ['./user.component.scss']
})
export class UserComponent implements OnInit {

  users: Observable<User[]>;

  constructor(readonly store: Store<AppState>) { 
    this.users = this.store.pipe(select(getUsers))
  }

  ngOnInit(): void {
    this.store.dispatch(new LoadUsers());
  }

}

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

describe('UserComponent', () => {
  let component: UserComponent;
  let fixture: ComponentFixture<UserComponent>;
  const initialState = { loggedIn: false };

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [UserComponent, UserTableComponent],
      imports: [MaterialModule, FormsModule, RouterTestingModule, UserDomainModule,
        HttpClientTestingModule, ReactiveFormsModule, BrowserAnimationsModule, StoreModule.forRoot(userReducer)],
      providers: [
          provideMockStore({initialState}),
      ]
    }).compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(UserComponent);
    component = fixture.componentInstance;
    component.users = component.store.pipe(select(getUsers));
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });

результат тестирования дает мне

Chrome 77.0.3865 (Windows 10.0.0) UserComponent should create FAILED
        TypeError: Cannot read property 'next' of undefined
            at <Jasmine>
            at Function.continuer (http://localhost:9876/_karma_webpack_/node_modules/q/q.js:1278:1)
            at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/node_modules/q/q.js:1305:1)
            at ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-evergreen.js:359:1)
            at ProxyZoneSpec.push../node_modules/zone.js/dist/zone-testing.js.ProxyZoneSpec.onInvoke (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-testing.js:308:1)
            at ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-evergreen.js:358:1)
            at Zone.run (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-evergreen.js:124:1)
            at runInTestZone (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-testing.js:561:1)
            at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-testing.js:576:1)
            at <Jasmine>
Chrome 77.0.3865 (Windows 10.0.0): Executed 20 of 31 (1 FAILED) (0 secs / 5.334 secs)
Chrome 77.0.3865 (Windows 10.0.0) UserComponent should create FAILED
        TypeError: Cannot read property 'next' of undefined
            at <Jasmine>
            at Function.continuer (http://localhost:9876/_karma_webpack_/node_modules/q/q.js:1278:1)
            at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/node_modules/q/q.js:1305:1)
            at ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-evergreen.js:359:1)
            at ProxyZoneSpec.push../node_modules/zone.js/dist/zone-testing.js.ProxyZoneSpec.onInvoke (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-testing.js:308:1)
            at ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-evergreen.js:358:1)
            at Zone.run (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-evergreen.js:124:1)
            at runInTestZone (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-testing.js:561:1)
            at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-testing.js:576:ne1)

Если я уберу 'ожидают(компонент) .toBeTruthy ();»в любом случае создание части не выполняется. Какой процесс он выполняет там, где используется «следующий»? И как я могу найти то, что называется?

Я новичок в тестировании и хранении, так что для меня это не имеет особого смысла. Я ценю любую помощь.

1 Ответ

1 голос
/ 14 октября 2019

Это было вызвано неправильным импортом асинхронного импорта. Я изменил import {async} с "q";импортировать {async} из "@ angular / core / testing";

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