Я пытаюсь создать Angular Component
, используя TestBed
, но получаю следующую ошибку:
Ошибка: невозможно разрешить все параметры для PriDateInput: (?),Свойства ошибки: Object ({ngSyntaxError: true})
Компонент PriDateInput
имеет службу AppContextService
, которая должна быть внедрена.Я хочу издеваться над AppContextService
, заменив его на MockAppContextService
.
Следует .spec
file:
class MockWindowService extends WindowService {
get href() : string {
return "https://elevationfw-iridium-build.azurewebsites.net/Default/Azure-DEV/#/";
}
}
class MockAppContextService extends AppContextService {
constructor(){
super(new StorageService(), new MockWindowService());
}
getContext() {
let emptyContext: any = this.emptyContext;
emptyContext.user.culture = "en-US";
return this.emptyContext;
}
}
describe('AppContextService Test cases', () => {
let mockApp = new MockAppContextService();
let priDateInput: PriDateInput;
debugger;
beforeEach(()=> {
TestBed.configureTestingModule({
declarations: [PriDateInput],
providers: [
{
provide: AppContextService,
useClass: mockApp
}
],
});
priDateInput = TestBed.get(PriDateInput);
});
it('should be possible to instantiate it', () => {
expect(priDateInput).toBeDefined();
expect(priDateInput).not.toBeNull();
});
it('should be possible to instantiate it', () => {
expect(priDateInput).toBeDefined();
expect(priDateInput).not.toBeNull();
});
});
Следует за выдержкой из моего компонента:
import { Component, OnInit, OnDestroy, ViewChild, ElementRef, Input, Output, EventEmitter } from "@angular/core";
import { AppContextService } from "./../../../../../services/appcontext.service";
import * as moment from 'moment';
@Component({
selector: "pri-date-input",
templateUrl: './input.date.component.html'
})
export class PriDateInput implements OnInit, OnDestroy {
.............................
@ViewChild("input") input: ElementRef;
@Input("domainType") domainType: String;
@Input("required") required: Boolean;
@Input("isLoading") isLoading: boolean;
@Input("isDisabled") isDisabled: boolean;
@Input("onWriteValue") onWriteValue: EventEmitter<string | null>;
@Output("onDateChange") onDateChange: EventEmitter<string> = new EventEmitter<string>();
constructor(
private _appContextService: AppContextService
) {
moment.locale(this._appContextService.user.culture);
}
ngOnInit(): void {
.......
}
ngOnDestroy(): void {
this.unsubscriveInputEvents();
}
......
}
Если вы считаете, что вам нужна дополнительная информация, пожалуйста, спросите:)