2012-04-19 5 views
5

Ich schrieb unter Code, versuche zu testen, ob ein Jquery-Dialog entschuldigt und angezeigt wird.Wie kann ich Unit-Test-Jquery-Dialog angezeigt werden?

var jqueryMock = sinon.mock(jQuery); 
var dialogExpectation = jqueryMock.expects("dialog"); 
dialogExpectation.once(); 

//call my function, in which create a jquery dialog. 

equals(dialogExpectation.verify(), true, "Dialog is displayed"); 
jqueryMock.restore(); 

aber es zeigt mir den Fehler: auf Test # 1 Gestorben: Versuchte nicht definierte Eigenschaft Dialog als Funktion wrap - { "message": "Versuchte nicht definierte Eigenschaft Dialog als Funktion einzuwickeln", "name" : "Typeerror"} ist

Der Code jquery sehr einfach:

displayMessage: function (message, title, hashId) { 

//some logic to build the message, title and hashId. 

$(messageDiv).dialog({ 
      height: 240, 
      width: 375, 
      modal: true, 
      title: title, 
      resizable: false, 
      buttons: [{ 
       text: localizedErrorMessages['OkText'], 
       click: function() { 
        $(this).dialog("close"); 
       } 
      }]    
     }); // end of dialog    
    } // end of displayMessage 

Wer weiß, wie der jquery Dialog zu verspotten und Unit-Test in diesem Szenario schreiben?

+0

Für welchen Testrahmen ist das gedacht? – streetlight

Antwort

3

Sie müssen so verhöhnen jQuery.fn:

var jQueryMock = sinon.mock(jQuery.fn); 
0

Ich habe eine jsFiddle geschaffen, um die Arbeits Antwort zu demonstrieren.

function displayMessage(message, title, hashId) { 

    $("#message").dialog(); 
} 

test("dialog was called", function() { 

    var jQueryMock = sinon.mock($.fn); // jQuery.fn and $.fn are interchangeable 
    var dialogExpectation = jQueryMock.expects("dialog"); 
    dialogExpectation.once(); 

    //call my function, in which create a jquery dialog. 
    displayMessage("new message", "title", 1); 

    equal(dialogExpectation.verify(), true, "Dialog was not displayed"); 
    jQueryMock.restore(); 
}); 

// This demonstrates a failing test - since the method actuall calls "dialog". 
// It also demonstrates a more compact approach to creating the mock 
test("toggle was called", function() { 

    var mock = sinon.mock(jQuery.fn).expects("toggle").once(); 
    displayMessage("new message", "title", 1); 

    equal(mock.verify(), true, "Toggle was never called"); 
}); 
Verwandte Themen