2012-02-24 17 views
5

Próbuję zaimplementować prosty test Jasmine, w którym Jasmine przetestuje, czy jakiś kod jest uruchamiany po kliknięciu przycisku wprowadzania. Ale nie rozumiem, dlaczego kliknięcie nie uruchamia się? Zdaję sobie sprawę, że będzie to możliwe, jeśli po prostu mam funkcję .click() przedEach, ale nie sądzę, że tak to działa.Jaśmin nie może wywołać zdarzenia kliknięcia

specyfikacje

describe("export citations", function(){ 
    var btn 
    beforeEach(function(){    
    btn= $("input#myButton").eq(0); 
    }); 

    it("should call click function", function() { 
    btn.trigger("click"); 
    expect($("#content").length).toBeGreaterThan(0); 
    }); 
}); 

osprzętu

$(function(){ 
    $("input#myButton").click(function(e){ 
    //Run a bunch of code here 
    } 
}); 

Odpowiedz

3

Czy rzeczywiście dodaje element do DOM w uchwycie? Poza tym brakuje ci a); w urządzeniu, aby zamknąć wywołanie zwrotne kliknięcia.

Ten pracował dla mnie:

describe("export citations", function() { 
    var btn; 
    beforeEach(function() { 
    btn= $("input#myButton").eq(0); 
    }); 

    it("should call click function", function() { 
    btn.click(); 
    expect($("#content").length).toBeGreaterThan(0); 
    }); 
}); 

Oprawa

(function() { 
    $("body").html("<input id='myButton' type='button'>"); 

    $("body").html("<div id='content'></div>"); 

    $("input#myButton").click(function() { 
    $("#content").html("<p>Hello</p>"); 
    }); 
})(); 
+0

Jak/gdzie ty załadować osprzęt? –

+0

Dawno nie pracowałem nad tym, ale myślę, że to opisuje: http://testdrivenwebsites.com/2010/07/29/html-fixtures-in-jasmine-using-jasmine-jquery/ – ebaxt

+0

Dzięki garść :) –

0

Myślę, że Urządzenie powinno być tak, aby odpowiadał Twoim przypadku testu

(function() { 
     $("body").html("<input id='myButton' type='button'>"); 

     $("input#myButton").click(function() { 
      $("body").append("<div id='content'>") 
     }); 
    })(); 
Powiązane problemy