最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How i can test callback in jasmine - Stack Overflow

programmeradmin1浏览0评论

I have class SomeClass with method SomeClass.fetch()

var repository = {
    get: function(obj) {
        //...
    }
};

var cache = false;

var SomeClass = {

    init: function() {
        //...
    },

    fetch: function () {
        var _this = this;

        repository.get({
            method: 'getRecentDialogsList',
            success: function (result) {
                if (!cache) {
                    _this.set(result);
                    _this.sort();
                    _this.trigger('fetch:success', _this);
                }

                _this.trigger('fetch:ajaxSuccess', _this);
            }
        });
    }
}

How i can test whether SomeClass.fetch() and check have been called this.set(), this.sort, this.trigger with parameters?

I have class SomeClass with method SomeClass.fetch()

var repository = {
    get: function(obj) {
        //...
    }
};

var cache = false;

var SomeClass = {

    init: function() {
        //...
    },

    fetch: function () {
        var _this = this;

        repository.get({
            method: 'getRecentDialogsList',
            success: function (result) {
                if (!cache) {
                    _this.set(result);
                    _this.sort();
                    _this.trigger('fetch:success', _this);
                }

                _this.trigger('fetch:ajaxSuccess', _this);
            }
        });
    }
}

How i can test whether SomeClass.fetch() and check have been called this.set(), this.sort, this.trigger with parameters?

Share Improve this question edited Jun 25, 2015 at 9:34 Diptendu 2,1581 gold badge17 silver badges30 bronze badges asked Jun 25, 2015 at 8:59 maxgumaxgu 1371 silver badge12 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 3

You must use spyes:

describe("SomeClass Test", function() {
    it("calls the set() method when fetch is called", function() {
        spyOn(SomeClass, "set");
        SomeClass.fetch();
        expect(SomeClass.set).toHaveBeenCalled();
    });
});

You can even totally replace the called method (for example, if it takes a long time to be pleted) with something like this:

spyOn(SomeClass, "set").and.callFake(function myFakeSet() {
  console.log("I've been called");
});
发布评论

评论列表(0)

  1. 暂无评论