【问题标题】:Jasmine.js v2.0.0 - TypeError: Cannot read property 'stopPropagation' of undefinedJasmine.js v2.0.0 - TypeError:无法读取未定义的属性“stopPropagation”
【发布时间】:2014-07-07 00:51:02
【问题描述】:

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

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

event.stopPropagation();

另一个函数有

event.preventDefault();

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这个错误意味着 event 未定义,而不是 stopPropogation()。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-24
        • 2019-08-19
        • 1970-01-01
        相关资源
        最近更新 更多