间谍Jquery addClass函数无法正常工作

时间:2014-09-18 15:41:32

标签: javascript jasmine

我正在尝试测试是否已调用Jquery addClass fnuction:

var data = "<form>Login Methods:<ul><li>SMS</li><li>Voice</li></ul></form>";

function injectOption() {
    console.log('in injectOption');
    data = $(data).addClass('some-class')[0].outerHTML;

    console.log('data is now');
    console.log(data);
}

describe("Our data array", function() {
    beforeEach(function () {

    });

    it('jquery.addClass called', function () {
        injectOption();
        spyOn($.fn, 'addClass');
        expect($.fn.addClass).toHaveBeenCalled();
    });
});

查看jsFiddle here。但不知何故,它总是失败,即使我可以在控制台日志中看到该类已添加...

1 个答案:

答案 0 :(得分:0)

您的代码存在几个问题。主要问题是你必须在调用injectOption()之前初始化间谍。

it('jquery.addClass called', function () {
    spyOn($.fn, 'addClass');
    injectOption();
    expect($.fn.addClass).toHaveBeenCalled();
});

工作Fiddle