Uncaught TypeError: не удается прочитать свойства «команды» неопределенного брошенного – Karma

Я сталкиваюсь с этими проблемами, когда я бегу ng test. Он отлично компилируется и ng build --prod работает нормально. Я даже не вижу эти переменные с таким именем, просто Observables, но перед переменными стоит $.

ВОПРОС ОБНОВЛЕН

"@types/jasmine": "2.8.9", "@types/jasminewd2": "~2.0.3", "@types/node": "~8.9.4", "codelyzer": "~4.2.1", "jasmine-core": "~2.99.1", "jasmine-spec-reporter": "~4.2.1", "karma": "~1.7.1", "karma-chrome-launcher": "~2.2.0", "karma-coverage-istanbul-reporter": "~2.0.0", "karma-jasmine": "~1.1.1", "karma-jasmine-html-reporter": "^0.2.2", "protractor": "^5.4.2", "ts-node": "~5.0.1", "tslint": "~5.9.1", "typescript": "~2.7.2"

Это все, что я вижу, когда Карма открывается Uncaught TypeError: не удается прочитать свойства «команды» неопределенного брошенного – Karma

Моя командная строка Uncaught TypeError: не удается прочитать свойства «команды» неопределенного брошенного – Karma

РОДИТЕЛЬСКИЙ ТЕСТ-файл

describe('MembersComponent', () => {
  let component: MembersComponent;
  let fixture: ComponentFixture<MembersComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        ReactiveFormsModule,
        HttpClientModule,
        RouterTestingModule,
        StoreModule.forRoot({})
      ],
      declarations: [MembersComponent, ModalComponent],
      providers: [{ provide: Store, useClass: StoreStub }]
    }).compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(MembersComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

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

ДЕТСКИЙ ИСПЫТАТЕЛЬНЫЙ ФАЙЛ

describe('ModalComponent', () => {
  let component: ModalComponent;
  let fixture: ComponentFixture<ModalComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ModalComponent],
      imports: [FormsModule, ReactiveFormsModule, StoreModule.forRoot({})],
      providers: [Store]
    }).compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(ModalComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});
this.store не определено. Обычно сервисы издеваются над тестируемыми. Как выглядит ваш макет?
Gosha_Fighten 29.05.2019 02:53

@Gosha_Fighten Я действительно не знаю, как это сделать. я новичок в карме

Patricio Vargas 29.05.2019 03:01

Поделитесь своим тестовым кодом Karma.

Gosha_Fighten 29.05.2019 03:02

@Gosha_Fighten готово

Patricio Vargas 29.05.2019 03:05

Вы издеваетесь над NgRx Store, используя RxJS BehaviorSubject. BehaviorSubject не предоставляет такой же API. У него нет таких методов, как dispatch и select. См. его документация. Используйте макеты Store от NgRx, как описано в статье Тестирование.

Gosha_Fighten 29.05.2019 03:15

@Gosha_Fighten Я даже не хочу это тестировать. Другие мои части штата не вызывают у меня проблем, только эта. остальные компоненты тоже нормально проверяются

Patricio Vargas 29.05.2019 03:58
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
2
6
2 619
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы даже не хотите тестировать store, попробуйте ниже:

import { of } from 'rxjs';

class StoreStub {
    select(val: any) {
        if (val === 'whatever action you have defined for RacingSelectors.selectMembers') {
            return of<Member[]>([
                {}, // create dummy member objects
            ]);
        } else if (val === 'whatever action you have defined for RacingSelectors.selectTeams') {
            return of<Team[]>([
                { firstName: '' },
                { lastName: '' },
                { jobTitle: '' },
                { team: '' },
                { status: '' }, // create dummy member objects
            ]);
        }
    }
    dispatch() {}
}


и в файле spec:

    TestBed.configureTestingModule({
      imports: [
        ReactiveFormsModule,
        HttpClientModule,
        RouterTestingModule,
        StoreModule.forRoot({})
      ],
      declarations: [MembersComponent, ModalComponent],
      providers: [{ provide: Store, useClass: StoreStub}]
    }).compileComponents();
  }));

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

Привет! Спасибо, что нашли время, чтобы помочь мне. Похоже, проблема в «командах». Я изменил ваш код, чтобы он был массивом Team[] вместо членов, и у меня все еще та же проблема.

Patricio Vargas 29.05.2019 05:47

@PatricioVargas Я создал его как массив элементов, потому что $members: Observable<Member[]>; имеет тип Member[]. Я думаю, что ошибка dispatch of undefined должна быть решена. Я не вижу никакого кода, связанного с teams. этот код, кажется, дает can't read teams of undefined. Это что-то внутри RacingActions класса?

Shashank Vivek 29.05.2019 05:53

извините, я случайно стер строку ```$teams: Observable<Team[]>;``` в своих вопросах. Я добавил это снова. Я заметил, что проблема с отправкой исчезла. единственный, который продолжает появляться дважды, это Uncaught TypeError: Cannot read property 'teams' of undefined thrown Я обновил свой вопрос

Patricio Vargas 29.05.2019 06:02

@PatricioVargas: я до сих пор не вижу .teams в предоставленном вами коде. Можете ли вы добавить скриншот всей ошибки. он показывает номер строки, в которой возникает эта ошибка. Это не происходит из вашего кода точно

Shashank Vivek 29.05.2019 07:01

Ага!! Я не вижу .teams в этом компоненте даже на html-странице. Я думаю, это потому, что .teams является частью моего состояния. мое состояние следующее {members: Member[], teams: Team[], selectedMember: Member}

Patricio Vargas 29.05.2019 15:48

@PatricioVargas: Но с моим StoreStub звонок не должен идти к states. Мы переопределяем главное store. Кроме того, можете ли вы вставить весь скриншот ошибки, как я просил ранее. Кроме того, есть ли какой-либо другой дочерний компонент, который может отображаться при тестировании этого компонента?

Shashank Vivek 29.05.2019 17:45

Квест обновлен. Я добавил весь образ из отладки в карму и загрузил код для дочернего компонента

Patricio Vargas 29.05.2019 19:34

Давайте продолжить обсуждение в чате.

Shashank Vivek 30.05.2019 06:20

Другие вопросы по теме