【问题标题】:Jasmine can't trigger click eventJasmine 无法触发点击事件
【发布时间】:2012-02-24 03:55:03
【问题描述】:

我正在尝试实现一个简单的 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
  }
});

【问题讨论】:

    标签: javascript jquery tdd bdd jasmine


    【解决方案1】:

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

    这对我有用:

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

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2015-04-28
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      相关资源
      最近更新 更多