角度7中的单元测试jquery click事件

时间:2019-07-03 13:37:10

标签: jquery angular unit-testing karma-jasmine

我有一个角度应用程序,其中有一个<a>标签,看起来像这样。

<a class="add-new-item" href="javascript:void(0);" >Add Item</a>

点击此链接后,该应用程序将运行一个jquery函数,该函数会在代码中动态添加一些html。

  $("body").on("click", ".add-new-item", function(e) {
    e.preventDefault();
    var parent = $(this).parent();
    parent.find(".item-wrapper").append(
      $(".menu-item", parent)
        .eq(0)
        .clone(true)
    );
  });

我写了以下测试。

  it("add new item link should add a new item", () => {
    const elementDe: DebugElement = fixture.debugElement;
    const addNewDe = elementDe.query(By.css(".add-new-item"));
    const newWrapperItem = elementDe.query(By.css(".item-wrapper"));

    expect(newWrapperItem.childNodes.length).toEqual(1);
    addNewDe.nativeElement.click();
    expect(newWrapperItem.childNodes.length).toEqual(2);
  });

但这不会调用上面提到的jquery click event,从而导致Expected 1 to equal 2.错误。现在我不确定什么是正确的方法。

1 个答案:

答案 0 :(得分:0)

解决了,

我必须在karma.config.js中包含javascript文件才能使其正常运行。

This question是我入门的一个很好的指针。