如何在异步的.then中测试代码,该代码又被另一个函数调用?

时间:2019-07-19 15:02:42

标签: jquery ajax jasmine karma-jasmine

我需要测试以确保在ajax调用的.then块内正确调用了函数。

我尝试对.then块中调用的函数进行监视,但是对ajax调用本身进行监视。

//the source
    eLterRgnList.GetList = function (pk) {
        var url = "../../SystemResource/Regions/GetList.asp";

        var options = {
            dataType: 'JSON'
        }
        ajaxHelper.CallWithSessionExp(url, null, options).then(function (res) {
            eLterRgnList.buildList(res, pk);
        });
    }



//the test
describe("eLterRgnList.GetList", function () {
    it("should call ajaxHelper of dataytype 'JSON' with data : pk, then build the list with the result", function () {
        var pk = 2;

        var ajaxSpy = spyOn(ajaxHelper, 'CallWithSessionExp').and.returnValue(Promise.resolve(''));

        eLtrRgns.eLterRgnList.GetList(pk);
        expect(ajaxSpy)
            .toHaveBeenCalledWith(
                '../../SystemResource/Regions/GetList.asp',
                null,
                Object({ dataType: 'JSON' }));

        //still need to figure out how to test what happens within the .then
    });
});

“ eLtrRgns”是命名空间包装器。

此测试通过了,但我真的希望能够在诺言中测试事物。某些背景,而不是棱角分明的框架,不使用导入/导出。

0 个答案:

没有答案