JASMINE单元测试中如何获取覆盖返回函数的then方法

时间:2019-02-18 14:34:38

标签: javascript jasmine mocking jasmine-jquery

我正在尝试在我的代码中模拟一个API以便在我的JASMINE单元测试中进行介绍,但是某些API函数返回了一个带有then的函数,但我无法获取访问/覆盖的返回块单元测试。

我已经嘲笑了所有的API选项回调

API.ComponentName = {
    render: function() {

        return {

                onClick: function(event) {
                    event.somename = 'data';
                },
                process: function() {
                    return API.request.post(data).then(function() {
                        **//section needs to be convered.**
                        return someval;
                    });
                },
                onCancel: function() {
                    // Moked function
                }
            };
        }
    };

API.request = {
        post: function() {

        }
    }

从上面的代码中,我无法在我的测试案例中介绍process方法的返回块。我可以访问其他方法。

对API API.ComponentName.render(options)的实际调用,我的案例是

function mockProcess(obj) {

        return jasmine.any(Function);
    }

it('Generate API call request', function() {
        var APISpy = spyOn(API.componentName, 'render').and.callFake(function() {
            options.onClick({});
            options.onAuthorize({});
            options.process(mockProcess());
        });

        myApp.API.init(); // some app functions inits API

        expect(API.componentName, 'render').toHaveBeenCalledWith({
            onClick: jasmine.any(Function),
            onCancel: jasmine.any(Function),
            process: jasmine.any(Function)
        });
    });

处理中出现类似

的错误
undefined is not an object (evaluating 'API.request.post(sampleargs).then')

这是怎么了?

0 个答案:

没有答案