0

这很简单。我的 JS 只是在调用:

$("#search_box").focus().effect("highlight",{},3000);

    describe('initialization', function(){
        beforeEach(function(){
            var search_box = $("#search_box");
        });

        it('should initially focus on the search box', function(){
            spyOn(search_box, 'focus');
            wizard._initialize();
            expect(search_box.focus).toHaveBeenCalled();
        });

        it('should initially highlight the search box', function(){
            spyOn(search_box, 'effect');
            wizard._initialize();
            expect(search_box.effect).toHaveBeenCalledWith("highlight", {}, 3000);
        });

    });

focus() 有效,但效果无效。它说 effect() 方法不存在,好像我没有加载 jquery-ui 库一样。

我已将 jquery-ui 添加到我的 jasmine.yml 文件中,并已验证它是由运行程序加载的。

有什么建议么?

4

3 回答 3

1

我有一个类似的问题。通过从我的应用程序的 jasmine.yml 文件中删除这一行,我得到了工作:

- public/javascripts/**/*.js

我已经明确更改了内容以明确包含每个 js 文件。我想应该小心通配符条目。

希望能帮助到你,

——何塞

于 2011-04-19T11:57:57.457 回答
0

如果将来有人需要这个答案:

您不能像这样监视效果方法:

spyOn(search_box, 'effect');

您应该像这样监视效果方法:

spyOn($.fn, 'effect');
于 2013-03-19T15:27:02.917 回答
0

我认为您需要将 search_box 的声明移到 beforeEach 函数之外。

改变:

describe('initialization', function(){
    beforeEach(function(){
        var search_box = $("#search_box");
    });
});

至:

describe('initialization', function(){
    var search_box;
    beforeEach(function(){
        search_box = $("#search_box");
    });
});

如果您使用过“使用严格”;调试器可能已经指出了这一点。这就是说,将 JQuery 与茉莉花间谍一起使用也存在问题,我现在没有时间详细说明。

于 2014-12-27T18:38:44.047 回答