Как проверить класс javascript, используя jest? - PullRequest
0 голосов
/ 18 сентября 2018

при попытке протестировать класс, используя только исключение объявления броска, какой будет правильный подход к тестовому классу в приведенном ниже сценарии и цепочке тестовых обещаний?

main.ts

export class ModuleExecutor {
    public execute(moduleName: string): (param1, param2) => any {
        const self = this;
        return function(params: any, responseCallback: (param: any, param2: any) => any) {
            let _mod;
            let _httpRequest;
            let _params;
            Promise.resolve(getApiModule(self.identity, moduleName))
                .then((mod: ModuleBase < any, any > ) => {
                    _mod = mod;
                    mod.ExecStage = ExecStage.Init;
                    // @ts-ignore - red squiggly for the return mismatch which are resolved in Grunt
                    return mod.init(getHttpModule(self.identity), params);
                });
        }
    }
}

main.spec.ts

  describe("Test promise chaining with Mock functions", () => {
        const myMockFuncExecute = jest.fn((mod: ModuleBase<any, any>) => {
            _mod = mod;
            _mod.ExecStage = ExecStage.Init;
            const ret = _mod.Init(getHttpModule(Identity.node), params);
            Promise.resolve(ret);
        });

        jest.mock("./main.ts");
        const executerClass = require("./main.ts");
        executerClass.mockImplementation(() => {
            return {
                init: myMockFuncExecute
            };
        });

        it('it should get Modulebase', async () => {
            const _result = new executerClass(Identity.node);
            _result.execute("Payments/url").then(myMockFuncExecute())
            .then((module) => {
                const mod = module;
                expect(mod).toEqual(ModuleBase);
            });
        });

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