gpt4 book ai didi

jquery - 如何使用 jasmine 和 sinon 在函数内模拟 jquery 调用

转载 作者:行者123 更新时间:2023-12-01 04:52:19 26 4
gpt4 key购买 nike

首先,这是工作要求。如果不能以这种方式完成,我需要一个很好的论据来给出。

我必须使用 jasmine 和 sinon 测试我们的 Backbone 项目。我不知道如何在函数中模拟 jquery 调用。我有一个这样的函数(进行了一些清理以丢弃无关的调用):

Project.Views.FormView = Backbone.View.extend({
sidenavClicked: function(event){



var sidenav_id = $(event.target).attr('id').split('m')[1];
var sidenav_num = sidenav_id.split('m')[1];

var form_id = $('div.active form').attr('id');
var form_num = form_id.split('m')[1];

//code for fast scrolling
this.slideTo(form_num-1, sidenav_num-1);

return false;
},
...
});

现在我只是想测试 SlideTo() 是否被调用,这是我的 Jasmine 规范

describe("Form", function(){
describe("Carousel", function(){

it("should call slideTo when navbar is clicked", function(){
var spy = sinon.spy();
var formView = new Project.Views.FormView({ el : $('#main'), id : 1});
formView.bind('slideTo', spy);

var event = {};
event.target = "<div id='form1'></div>";

formView.sidenavClicked(event);
});
});

错误消息是:TypeError:form_id在文件中未定义:.../src/main/webapp/js/views/FormView.js

据我所知,这是因为没有 jQuery 可以匹配的文档。如何让 form_id 具有值?

实际的代码确实有效,并且确实做了它应该做的事情。

更新:html 看起来像这样:

<html>
<body>
<div id="main">
<ul id="carousel-navbar">
<li><a id="navlink-form1">Text</a></li>
...
</ul>
<div id="formCarousel" class=" carousel slide" >
<div class="active first item">
<form id="form1" name="question1">
...
</form>
</div>
...
</div>
</div>
</body>
</html>

澄清并不完全像这样(实际是 442 行),但结构在相关的地方应该是同义的。

最佳答案

问题是您正在查找的元素未附加到 DOM。您必须在调用函数之前添加它:

it("should call slideTo when navbar is clicked", function(){
var spy = sinon.spy();
var formView = new Project.Views.FormView({ el : $('#main'), id : 1});
formView.bind('slideTo', spy);
$('body').append('<div class="active"><form id="form1" /></div>');


var event = {};
event.target = "<div id='form1'></div>";

formView.sidenavClicked(event);
});

还有一些插件可以更轻松地使用 jasmin 处理夹具:jasmine-fixturejasmine-dom

关于jquery - 如何使用 jasmine 和 sinon 在函数内模拟 jquery 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18152305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com