Как издеваться над сторонними компонентами, которые не зависят от конструктора? - PullRequest
0 голосов
/ 28 июня 2019
export class ComponentDetailsComponent implements OnInit {   
    @ViewChild('treeGridReference') treeGrid: jqxTreeGridComponent;
....more code....
  this.treeGrid.clearSelection();// how do I mock this?
}

Если бы это была зависимость от конструктора, я мог бы просто создать заглушку для jqxTreeGridComponent с пустым методом clearSelection, что-то вроде:

class jqxTreeGridComponentStub{
  clearSelection(){}
  }
}
{ provide: jqxTreeGridComponent, useClass: jqxTreeGridComponentStub },

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Вы можете предоставить фиктивный компонент в массиве объявлений в модуле тестирования Testing,

@Component({selector: 'jqxTreeGridComponent-selector', template: ''})
class jqxTreeGridComponent{
   clearSelection(){}
}

describe('', () => {
    beforeEach(async(() => {
            TestBed.configureTestingModule({
                declarations: [ ComponentDetailsComponent , jqxTreeGridComponent],
            }).compileComponents();
        }));
    })
}

Чтобы узнать больше о компонентах-заглушках, прочитайте здесь в документации.

0 голосов
/ 28 июня 2019

provide для провайдеров.

Здесь у вас есть ссылка на шаблон.

Чтобы сделать это, просто сделайте это в beforeEach:

component.jqxTreeGridComponent = myTreeGridMock;

И объявите myTreeGridMock, чтобы включал все методы и свойства, используемые в вашем компоненте (очевидно, имитируйте эти функции и переменные тоже)

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