1

DialogController を呼び出すメソッドの単体テストを行うにはどうすればよいですか? this.controller.ok()呼び出されたことをテストしたい。

ReprocessLotDialog.js

@inject(DialogController)
export class ReprocessLotDialog {
    constructor(dialogController) {
        this.controller = dialogController;
    }


    commitReprocessingLot() {    
        this.controller.ok({
            reprocessLot: this.model
        });
    }    

    commitIncompleteBags(){
       ... do stuff ....
       this.commitReprocessingLot();
    }
}

myDialog.spec.js私はこれを試しましたが、動作させることができません

describe("The ReprocessLotDialog module", ()=> {
    let sut;

    beforeEach(()=> {
        var container = new Container().makeGlobal();
        container.registerInstance(DialogController,controller => new DialogController());
        sut = container.get(ReprocessLotDialog);
    });


     it("commitReprocessingLot() should call controller.ok", (done)=> {    
        spyOn(sut, "controller.ok");

        sut.commitIncompleteBags();
        expect(sut.controller.ok).toHaveBeenCalled();
        done();
    });
});

テストは失敗しますTypeError: 'undefined' is not a function (evaluating 'this.controller.ok({ reprocessLot: this.model })')

私が理解している限り、DialogControllerスルーDIをに渡し、DialogControllerをctorに注入していますcontainercontainer.get(ReprocessLotDialog)

私も試しまし container.registerInstance(DialogController,{"dialogController":DialogController});たが、それもうまくいきません。

どうもありがとう

4

2 に答える 2