Невозможно установить свойство 'http' из неопределенного - Angular Модульное тестирование - PullRequest
0 голосов
/ 01 апреля 2020

Я довольно новичок в модульном тестировании. Я создаю Angular компонент, и мой набор тестов - Jasmine / Karma.

Мой первый тест жалуется на две проблемы, и я только пытаюсь проверить инициализированное значение переменной:

TypeError: Cannot set property 'http' of undefined

TypeError: Cannot read property 'isView' of undefined

Код довольно прост, поэтому интересно, почему я получаю эти ошибки?

myComponent.ts

sView = false;

myComponent.spe c .ts

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

    beforeEach(() => {
        TestBed.configureTestingModule({
            schemas: [NO_ERRORS_SCHEMA],
            declarations: [myComponent],
            imports: [HttpClientTestingModule],
            providers: [
                {
                    provide: myService,
                    useFactory: myServiceMock
                }
            ]
        });
        fixture = TestBed.createComponent(myComponent);
        component = fixture.componentInstance;
    });


    it('isView defaults to: false', () => {
        expect(component.isView).toEqual(false);
    });

});

Что здесь происходит?

1 Ответ

1 голос
/ 01 апреля 2020

Попробуйте код ниже:

describe('myComponent', () => {
component: myComponent;
let fixture: ComponentFixture<myComponent>;
let myServiceMock: MyServiceMock;
beforeEach(async(() => {
  myServiceMock = new MyServiceMock();
  TestBed.configureTestingModule({
  declarations: [myComponent],
  providers: [
    { provide: myService, useValue: myServiceMock }
  ]
})
  .compileComponents();
}));

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

beforeEach(() => {
 component.ngOnInit();
})

it('should create the app component', () => {
 expect(component).toBeTruthy();
});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...