2012-02-24 18 views
5

Tôi đang cố triển khai một thử nghiệm Jasmine đơn giản, trong đó Jasmine sẽ kiểm tra xem một số mã có được chạy khi nhấp vào nút nhập hay không. Nhưng tôi không thể hiểu tại sao nhấp chuột không kích hoạt? Tôi nhận ra nó sẽ nếu tôi chỉ có chức năng .click() trong beforeEach nhưng tôi không nghĩ rằng đó là cách nó giả sử để làm việc.Jasmine không thể kích hoạt sự kiện nhấp chuột

số kỹ thuật

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

cố

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

Trả lời

3

Bạn đã thực sự được thêm một yếu tố vào DOM trong trận đấu? Ngoài ra bạn đang thiếu a); trong lịch thi đấu để đóng cuộc gọi lại nhấp chuột.

này đã làm việc cho tôi:

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

cố

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

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

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

Làm thế nào/nơi nào bạn tải của bạn vật cố định? –

+0

Một thời gian dài kể từ khi tôi đã làm việc về điều này, nhưng tôi nghĩ rằng điều này mô tả nó: http://testdrivenwebsites.com/2010/07/29/html-fixtures-in-jasmine-using-jasmine-jquery/ – ebaxt

+0

Cảm ơn một bó :) –

0

Tôi nghĩ rằng trận đấu của bạn nên được như thế này cho phù hợp với Test Case của bạn

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

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