Jasmine无法触发点击事件

时间:2012-02-24 03:55:04

标签: javascript jquery tdd bdd jasmine

我正在尝试实现一个简单的Jasmine测试,其中Jasmine将测试是否在点击输入按钮时运行某些代码。但我无法理解为什么点击不会触发?我意识到如果我在beforeEach中只有.click()函数,但我不认为它是如何工作的。

功能

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

夹具

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

2 个答案:

答案 0 :(得分:4)

你真的在夹具中的DOM中添加了一个元素吗?你也错过了a);在夹具中关闭点击回调。

这对我有用:

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

夹具

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

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

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

答案 1 :(得分:0)

我认为您的灯具应该像这样适合您的测试用例

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

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