Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 事件键代码13模拟不工作_Backbone.js_Mocha.js_Keypress_Sinon - Fatal编程技术网

Backbone.js 事件键代码13模拟不工作

Backbone.js 事件键代码13模拟不工作,backbone.js,mocha.js,keypress,sinon,Backbone.js,Mocha.js,Keypress,Sinon,我正在为主干视图编写测试,通过创建$.event(“keypress”,“which:13})并将其传递到测试套件中的trigger方法来模拟按键事件。然而,当我查看我的测试结果时,我发现在我的createOneNet函数中,它在第一个条件下返回,测试失败,并显示以下消息AssertionError:expected addCommentToCollection至少被调用过一次,但从未被调用过,这意味着它不会将按键事件识别为13 为什么会这样? 我的设置不正确吗 这是我尝试测试的主干功能: cr

我正在为主干视图编写测试,通过创建
$.event(“keypress”,“which:13})
并将其传递到测试套件中的
trigger
方法来模拟按键事件。然而,当我查看我的测试结果时,我发现在我的
createOneNet
函数中,它在第一个条件下返回,测试失败,并显示以下消息
AssertionError:expected addCommentToCollection至少被调用过一次,但从未被调用过
,这意味着它不会将按键事件识别为13

为什么会这样? 我的设置不正确吗

这是我尝试测试的主干功能:

createOnEnter: function(event) {
        if (event.keyCode != 13) return;
        if (!this._input.val()) return;

        this.addCommentToCollection();
        this.resetInputField();
        this.concealButtons();
    }
这是在侦听输入字段上的按键事件的
主干
eventhash中触发的

此问题的必要测试设置(还有许多其他存根和间谍):

描述(“AppView”,函数(){
前(函数(){
//创建测试夹具
此.$fixture=$(“”+
'' +
'' +
'' +
'' +
'' +
'' +
“
    ”+ ''); }); beforeach(函数(){ //为每次运行绑定夹具 此.$fixture.appendTo($(“#fixture”); //实例化我们的模型 this.model1=新注释({ “评论”:“我喜欢饼干”, “已创建”:“2012年12月12日”, “修改”:“13-01-2013”, “用户”:{ “用户名”:“奈特先生” } }); this.model2=新注释({ “评论”:“我剽窃一切!”, “已创建”:“14-09-2012”, “修改”:“21-01-2013”, “用户”:{ “用户名”:“卡萨诺瓦先生” } }); //将模型放置在数组中以用于集合实例化 this.models=[this.model1,this.model2]; //用上面的模型实例化我们的集合 this.collection=新的CommentList(this.models, {url:“items/1234567890/comments”} ); this.addCommentSpy=sinon.spy(AppView.prototype,“addCommentToCollection”); this.createEnterSpy=sinon.spy(AppView.prototype,“createOnner”); this.resetSpy=sinon.spy(AppView.prototype,“resetInputField”); this.hiddenspy=sinon.spy(AppView.prototype,“隐藏按钮”); //实例化我们的新视图 this.view=新建AppView({ “收藏”:这个收藏, “el”:这是$fixture }); }); 在每个(函数()之后){ this.addCommentSpy.restore(); 这是resetSpy.restore(); this.hiddenspy.restore(); 这是.createEnterSpy.restore(); //撤消我们的服务器 这个.server.restore(); //破坏我们的观点 this.view.remove(); }); 在(函数()之后{ //清空我们的固定装置分区 $(“#fixtures”).empty(); }); 它(“当按键-‘Enter’-输入字段中有值时,应触发CreateOneNoter”,函数(){ this.view.$(“#新评论”).val(“堂兄本森,它坏了!”); this.view.$(“#new comment”).trigger($.Event(“keypress”{which:13})); expect(this.createEnterSpy).to.have.been.called; expect(this.addCommentSpy).to.have.been.call; 期望(this.resetSpy).to.have.been.call; 期待(这个间谍)被呼叫; }); });
    基于

    事件属性

    jQuery规范化以下属性以实现跨浏览器一致性:

    目标
    相关目标
    pageX
    pageY
    哪个
    metaKey

    因此,请使用
    事件。哪个

    var code = event.keyCode || event.which;
    if (code == 13) { //Enter keycode
        //Do something
    }
    
    像这样

    var code = event.keyCode || event.which;
    if (code == 13) { //Enter keycode
        //Do something
    }