javascript - Jasmine.js v2.0.0 - TypeError : Cannot read property 'stopPropagation' of undefined

标签 javascript jquery backbone.js jasmine jasmine-jquery

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

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

event.stopPropagation();

另一个函数有

event.preventDefault();

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

类型错误:无法读取未定义的属性“stopPropagation”

如何为具有 event.stopPropagation(); 的 View 函数编写测试用例;和 event.preventDefault();

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

最佳答案

你可以试试这段代码,我希望这对你测试事件有用:

            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();

关于javascript - Jasmine.js v2.0.0 - TypeError : Cannot read property 'stopPropagation' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23731344/

相关文章:

javascript - 防止 react 简单 map 中的蓝色路径矩形

javascript - 每次引用对象时如何强制评估对象中的函数?

jquery - 如何根据名为 From 的元素定位 Fancybox

javascript - 在其他函数(JS)的末尾运行函数

javascript - Backbone js模型依赖注入(inject)

mod-rewrite - 如何动态设置基础标签?

jquery-mobile - jQuery Mobile 对话框和 Backbone js

javascript - 按时间间隔转储 SQLite 数据库

javascript - 将组件链接到单独的元素,并相对于该元素显示它

javascript - 限制外部 CSS 对本地 React 组件或 HTML 元素的影响