Как смоделировать ngControl в Custom Form Control - модульные тесты Angular - PullRequest
0 голосов
/ 12 марта 2020

Я ищу пример с модульными тестами для Custom Form Control в Angular 9. Эта часть constructor(@Self() private ngControl: NgControl) вызывает ошибку: Error: NodeInjector: NOT_FOUND [NgControl]. Так как мне нужно каким-то образом установить аксессор значения.

Я ввожу ngControl в конструктор, так как мне нужно использовать ngControl позже в моем компоненте. Вот почему я не использовал типичную реализацию с provide: NG_VALUE_ACCESSOR.

. Я пытался издеваться над ней:

beforeEach(async(() => {
    TestBed.configureTestingModule({
        providers: [
            { provide: NgControl, useValue: new FormControlDirective([], [], [], null) }
        ],
        imports: [FormsModule, ReactiveFormsModule]
    }).compileComponents();

Но у меня есть ошибка: No valid value accessor for form control with unspecified name attribute, поскольку я не Не знаю, что должно быть под 3-м параметром функции FormControlDirective, а именно: valueAccessors: ControlValueAccessor[]

У кого-нибудь есть идеи, как мне это высмеивать?

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Проблема была в том, что я не импортировал мой Модуль с CustomFormControl в массиве Imports. Вот почему это не сработало. Может быть, это кому-нибудь поможет.

0 голосов
/ 12 марта 2020

Попробуйте издеваться так:

let mockNgControl: any;

beforeEach(async(() => {
    mockNgControl = jasmine.createSpyObj('ngControl', ['value', /* mock other methods required here */]);
    TestBed.configureTestingModule({
        providers: [
            { provide: NgControl, useValue: mockNgControl }
        ],
        imports: [FormsModule, ReactiveFormsModule]
    }).compileComponents();
...