Jasmine.js v2.0.0 - TypeError:无法读取属性' stopPropagation'未定义的

时间:2014-05-19 06:49:32

标签: javascript jquery backbone.js jasmine jasmine-jquery

我是Jasmine2 JS框架的新手。我正在使用Jasmine.js框架为我在Backbone.js框架中开发的应用程序创建测试套件。

当我为Backbone.js创建测试用例时 - >查看home.js文件,我的一个home.js视图函数有

event.stopPropagation();

和另一个功能

event.preventDefault();

如果我的Backbone.js - > views函数有 event.stopPropagation();和event.preventDefault(); ,我的测试套件抛出错误如下:

TypeError:无法读取属性' stopPropagation'未定义的

请帮助我,如何为具有event.stopPropagation(); and event.preventDefault();

的视图函数编写测试用例

如何跳过这些有event.stopPropagation();和event.preventDefault();当我从Jasmine.js框架调用函数时?

请告诉我,如果您需要我的过渡进一步澄清。

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以尝试使用此代码,我希望这可以帮助您测试事件:

            var event = {
                type: 'click',
                stopPropagation: function () {},
                preventDefault: function () {}
            };          
            var stopPropagationSpy  = spyOn(event, 'stopPropagation');
            var preventDefaultSpy   = spyOn(event, 'preventDefault');           
            {OBJ}.{FUNCTION_TO_CALL}(event);
            $("{YOUR_ELEMENT_TO_TRIGGER}").trigger(event);
            expect(stopPropagationSpy).toHaveBeenCalledWith();
            expect(preventDefaultSpy).toHaveBeenCalledWith();

答案 1 :(得分:0)

此错误表示事件未定义,而不是stopPropogation()。

submitClicked(e: any) {
    e.preventDefault(); <-- e would be undefined.
}