9

我需要模拟一个 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();
        });
    }

我应该做些什么?

4

1 回答 1

2

假设您的modalServiceis NgbModal,您想要测试的逻辑似乎在模态内容 ( ProductModal) 内部,而不是NgbModal其本身。

如您所见,使用.open()您的will 后将成为; 因此您可以使用例如组件固定装置作为任何组件进行测试 并完全跳过:modalRef.componentInstanceProductModalProductModalmodalService

(同样,假设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
// …
于 2018-02-13T13:53:17.330 回答