我正在尝试使用BDD(行为驱动开发)创建一个jquery模块。
这是我的组件
(function($) {
function MyModule(element){
return false;
}
$.fn.myModule = function() {
var args = Array.prototype.slice.call(arguments, 1);
return this.each(function() {
new MyModule(this);
});
};
$.fn.myModule.Constructor = MyModule;
})(window.jQuery);
这是我的测试
QUnit.test( "test", function( assert ) {
assert.expect(1);
var smallBox = $('<div/>',{'id':'smallBox'}).width(200).height(200);
var result = smallBox.myModule();
console.log(result); // This gives the HTML element itself but I am expecting it must be boolean false
assert.notOk(result, "should return false" );
});
我有两个问题。
1-如果我的组件返回布尔值,该怎么办?这是错误的模式吗?
2-如何从组件中返回布尔值
答案 0 :(得分:1)
那是因为你没有返回new MyModule
,你返回的是this.each
的返回值,这是一个jQuery对象。如果你想要一个布尔值,你将不得不返回一个布尔值。像这样:
$.fn.myModule = function() {
var args = Array.prototype.slice.call(arguments, 1);
this.each(function() { // don't return here because then you'll return a jQuery object
new MyModule(this);
});
return false; // return a boolean (works)
};
从回调内部返回不会影响父函数的返回值。