2017-03-01 2 views
2

Ich versuche, ein Jquery-Modul mit BDD (behavior-driven development) zu erstellen.Sollte Jquery Component false zurückgeben

Hier ist meine Komponente

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

Hier ist mein Test ist

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"); 
}); 

HERE IS FIDDLE

Ich habe 2 Fragen.

1- Was ist, wenn meine Komponente Boolean zurückgibt? Ist es ein falsches Muster?

2- Wie ich boolean aus meiner Komponente

Antwort

1

Das zurückkehren können, weil Sie new MyModule nicht bist zurückkehren, sind Rückkehr Sie den Wert this.each zurückgegeben, die ein jQuery-Objekt ist. Wenn Sie einen booleschen Wert wünschen, müssen Sie einen booleschen Wert zurückgeben. Wie folgt aus:

$.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) 
}; 

Rückkehr aus dem Innern des Rückruf beeinflußt nicht den Rückgabewert von der übergeordneten Funktion.

+0

so Validierung sollte innerhalb sein $ .fn.myModule –

+0

@MehmetErenYener Ja sollten Sie das Ergebnis aller 'neuen MyModule' Aufrufe ansammeln und dann diesen Wert zurückgeben. –

Verwandte Themen