Угловой 2+ (7) Мелкий тест вложенного компонента - PullRequest
0 голосов
/ 19 декабря 2018

Хорошо, у меня есть компонент, для которого я пишу несколько тестов.В этом компоненте у меня есть другой компонент, который имеет Input:

@Component({
  selector: 'navigator',
  templateUrl: './navigator.component.html',
  styleUrls: ['./navigator.component.scss'],
})
export class Navigator{

    @Input()
    public myobject: InputClass;
}

InputClass представляет собой простой объект:

export class InputClass{
    public id: string;
    public Name: any;

    constructor(id: string) {
        this.id = id;
    }
}

И в главном компоненте у меня есть соответствующее свойство:

@Component({
      selector: 'main-component',
      templateUrl: './mainComponent.component.html',
      styleUrls: ['./mainComponent.component.scss'],
    })
    export class MainComponent{

         public myObject: InputClass;
    }

Шаблон mainComponent:

 <navigator class="container" [myobject] = "myObject">
 </navigator>

Теперь я хочу проверить это, если я установлю какое-то значение в свойстве myObject mainComponent, а затем проверим, имеет ли значение @Input в навигатореполучил значение:

it('set the input in navigator',() => {
    let testobj: InputClass;
    testobj = {
        id: '1',
        componentName: 'SomeValue',
    };

    component.myObject= testobj;
    fixture.detectChanges();

    el = fixture.debugElement.query(By.css('navigator'));

    // For test and debug purposes
    let test = el.nativeElement.attributes['ng-reflect-myobject'];

    expect(test.value).toBe(testobj);
});

Я пробовал это раньше с другим вводом, кроме типа строки, и когда я устанавливал значение, оно работало как чудо, но здесь это не удается, и когда я отлаживаю его с помощью Chrome Iполучаем, что значением атрибута является [object Object]:

Результат теста

Test result

Отладочная информация

Debug

Теперь я думаю, что происходит то, что я получаю строковую версию объекта (потому что в jsэто преобразование по умолчанию из объекта в строку, верно?).Если это так, как я могу получить объект из ввода?

1 Ответ

0 голосов
/ 19 декабря 2018

Не могли бы вы проверить навигатор отображаемого содержимого HTML?

Я считаю, что поиск формы строки в renderedHTML будет намного проще и даст тот же эффект теста.

ВAngular Testing Docs они используют свойство textContent для этого: Angular Testing - By CSS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...