Я исправляю некоторые модульные тесты после обновления нашего проекта до Angular 7, и я столкнулся с проблемой в тесте, которая должна проверить, что компонент действительно создан.
Вот тест:
it('should build without a problem', () => {
expect(suite.appComponent).toBeTruthy();
});
Сбой из-за ошибки:
Ошибка: ожидается, что неопределенное значение не соответствует действительности.в на UserContext.(http://localhost:9876/_karma_webpack_/webpack:/src/app/app.component.spec.ts:93:32) в ZoneDelegate ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:391:1) в 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:308:1)
Вот настройки и все тесты вместе:
describe('App component', () => {
let suite: TestSuite;
beforeAll(() => { suite = <TestSuite>{}; });
afterAll(() => { suite = null; });
beforeAll(() => {
suite = <TestSuite>{};
});
beforeEach((done) => {
TestBed
.configureTestingModule({
declarations: [
TestComponent,
AppComponent,
MockComponent
],
providers: [
{ provide: Router, useClass: MockRouter }
]
,
schemas: [ NO_ERRORS_SCHEMA ]
})
.compileComponents().then(() => {
suite.fixture = TestBed.createComponent(TestComponent);
suite.appComponent =
suite.fixture.debugElement.children[0].componentInstance;
suite.localStorageService =
suite.fixture.debugElement.children[0].injector.get(
MyStorageService
);
suite.loginService =
suite.fixture.debugElement.children[0].injector.get(
MyLoginService
);
suite.authenticationService =
suite.fixture.debugElement.children[0].injector.get(
MyauthService
);
done();
});
});
it('should build without a problem', () => {
expect(suite.appComponent).toBeTruthy();
});
Любая помощь, наиболее ценимая.