Целью модульного теста является тестирование функции самого компонента, а не начало тестирования функций, выходящих за рамки component
, который должен быть протестирован. Таким образом, вам не нужно проверять dialog.open
, так как это должно быть проверено в модульном тесте самого NewCustomDialog
.
- начните с создания заглушки, которую вы можете использовать какзаполнитель для
NewCustomDialog
, например
export class NewCustomDialogStub{
open(){ return null; }
close(){ return null; }
// and similar dummy methods which is required by "OpenPopUpComponent"
}
Введите это
stub
как
useClass
в
providers
, как показано ниже:
export class NewCustomDialogStub{
open(){ return null; }
close(){ return null; }
// and similar dummy methods which is required by "OpenPopUpComponent"
}
describe('OpenPopUpComponent', () => {
let component: OpenPopUpComponent;
let fixture: ComponentFixture<OpenPopUpComponent>;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [],
declaration: [OpenPopUpComponent],
providers: [
{ provide: NewCustomDialog, useClass: NewCustomDialogStub }
]
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(OpenPopUpComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should be defined',()=>{
expect(component).toBeDefined();
})
it('should call "open" method of dialog on calling openModel() ',()=>{
spyon(component.dialog,'open').and.callThrough();
component.openModel();
expect(component.dialog.open).toHaveBeenCalled();
})
})
Это очень простое тестирование, но если вы хотите узнать больше о написании тестов, Вы можете обратиться к этой серии статей, где я рассмотрел почти все основные сценарии тестирования . Проверьте в нижней части статьи все ссылки. Тот, который я использовал здесь , это