我需要模拟一个NgbModal以角度进行一些单元测试,但我不知道如何做到这一点。这是我的功能:
openModal(deviceID: string, productID: string){
const modalRef = this.modalService.open(ProductModal)
modalRef.componentInstance.content = {
deviceId: deviceID,
productId: productID
}
modalRef.componentInstance.toEmit.subscribe(($e) => {
if ($e === true) this.reloadList();
});
}
我应该做什么?
答案 0 :(得分:1)
假设您的modalService
为NgbModal
,您想要测试的逻辑似乎位于模态内容(ProductModal
)内,而不是NgbModal
本身。
正如您所看到的,在使用.open()
之后,您的modalRef.componentInstance
将成为ProductModal
的一个实例;因此,您可以将ProductModal
测试为任何组件,例如组件夹具并完全跳过modalService
:
(同样,假设ProductModal
是具有适当装饰的组件。)
let component: ProductModal;
let fixture: ComponentFixture<ProductModal>;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [ NgbModal, NgbActiveModal ],
declarations: [ ProductModal ]
});
fixture = TestBed.createComponent(ProductModal);
component = fixture.componentInstance;
fixture.detectChanges();
});
// now you have the component in `component`, so you can test
// component.content
// component.toEmit
// …