Я пишу приложение с NativeScript 6+ и Angular 8+. Я пытаюсь написать несколько юнит-тестов для моих услуг с кармой и жасмином. Мои модульные тесты выдают ошибки.
Как правильно написать свои модульные тесты? Я прочитал и следовал инструкциям на этой веб-странице, но она все еще не работает: https://docs.nativescript.org/angular/tooling/testing/testing
Ошибка, которую я получаю, возникает и в других службах, а не только в этой .
karma.config. js
// list of files / patterns to load in the browser
files: [
'src/tests/setup.ts',
'src/tests/**/*.spec.ts'
],
test
import {
nsTestBedAfterEach,
nsTestBedBeforeEach,
nsTestBedRender
} from 'nativescript-angular/testing';
import { HttpInterceptorService } from '../app/core/interceptors/http-interceptor-service';
describe('HttpInterceptorService', () => {
beforeEach(nsTestBedBeforeEach([HttpInterceptorService]));
afterEach(nsTestBedAfterEach(false));
it('should be created', () => {
});
it('should have its functions defined', () => {
});
});
Ошибка:
NativeScript / 13.3 (13.3; iPad): Executed 15 of 17 SUCCESS (0 secs / 0.018 secs)
NativeScript / 13.3 (13.3; iPad) undefined at line undefined FAILED
An error was thrown in afterAll
TypeError: undefined is not an object (evaluating 'window.location.origin') (line 108)
at <Jasmine>
at file:///app/vendor.js:157139:46
at <Jasmine>
at file:///app/vendor.js:157341:57
at <Jasmine>
at file:///app/bundle.js:1389:28
at <Jasmine>
TypeError: undefined is not an object (evaluating 'window.location.origin') (line 108)
at <Jasmine>
at file:///app/vendor.js:157139:46
at <Jasmine>
at file:///app/vendor.js:157341:57
at <Jasmine>
at file:///app/bundle.js:1389:28
at <Jasmine>
NativeScript / 13.3 (13.3; iPad): Executed 16 of 17 (1 FAILED) (0.084 secs / 0.018 secs)
TOTAL: 1 FAILED, 15 SUCCESS
CONSOLE LOG file:///node_modules/nativescript-unit-test-runner/app/main-view-model.js:132:0: NSUTR: this.error: An error was thrown in afterAll
TypeError: undefined is not an object (evaluating 'window.location.origin') (line 108)
at <Jasmine>
at file:///node_modules/nativescript-angular/zone-js/dist/zone-nativescript.jasmine.js:1445:0
at <Jasmine>
at file:///node_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:188:0
at <Jasmine>
at file:///src/main.ts:11:16
at <Jasmine>
TypeError: undefined is not an object (evaluating 'window.location.origin') (line 108)
at <Jasmine>
at file:///node_modules/nativescript-angular/zone-js/dist/zone-nativescript.jasmine.js:1445:0
at <Jasmine>
at file:///node_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:188:0
at <Jasmine>
at file:///src/main.ts:11:16
at <Jasmine>
CONSOLE LOG file:///node_modules/nativescript-unit-test-runner/app/main-view-model.js:120:0: NSUTR: completed test run.
CONSOLE LOG file:///node_modules/nativescript-unit-test-runner/app/main-view-model.js:120:0: NSUTR: completed test run.
CONSOLE LOG file:///node_modules/nativescript-unit-test-runner/app/main-view-model.js:124:0: NSUTR: completeAck
CONSOLE LOG file:///node_modules/nativescript-unit-test-runner/app/main-view-model.js:124:0: NSUTR: completeAck
NativeScript / 13.3 (13.3; iPad) ERROR
Это фрагмент кода из мой http перехватчик:
@Injectable()
export class HttpInterceptorService implements HttpInterceptor {
constructor(
private httpLoaderService: HttpLoaderService,
private authentication: AuthenticationService,
private ssoAuthentication: SsoAuthenticationService,
private endpointHelper: EndpointHelperService,
private router: RouterExtensions
) {}
public intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
Он находится в модуле под названием 'core'
import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
import { NativeScriptCommonModule } from 'nativescript-angular/common';
import { HttpInterceptorService } from './interceptors/http-interceptor-service';
import { HttpLoaderService } from './shared/http-loader.service';
import { NativeScriptHttpClientModule } from 'nativescript-angular/http-client';
@NgModule({
declarations: [],
imports: [
NativeScriptCommonModule,
NativeScriptHttpClientModule
],
providers: [HttpInterceptorService, HttpLoaderService],
schemas: [NO_ERRORS_SCHEMA]
})
export class CoreModule { }