如何为innerHTML元素编写jasmine测试?



所以我的代码是这样做的…

diff = timevalue - (((Date.now() - startDate)/1000)|0);
document.getElementById("timer").innerHTML = diff.toLocaleString();

我当前测试的一部分看起来像这样…

  it("count should define tictoc", function(){
    jasmine.clock().install();
    aTimer.count(25);
    jasmine.clock().tick(1002);
    expect(aTimer.tictoc).toEqual(1);
    expect(document.getElementById("timer").innerHtml).toBe("success");
    jasmine.clock().uninstall();
  });

但是我从jasmine那里得到了这个…

"TypeError: Cannot set property 'innerHTML' of null"

现在我认为这是因为html元素不存在....这是有意义的,因为我正在测试....但是我如何模拟该元素以使测试工作呢?

我明白了:

  it("count should define tictoc", function(){
    jasmine.clock().install();
    var dummyElement = document.createElement('span');
    document.getElementById = jasmine.createSpy('HTML Element').and.returnValue(dummyElement);
    aTimer.count(25);
    jasmine.clock().tick(1002);
    expect(aTimer.tictoc).toEqual(1);
    expect(document.getElementById("timer").innerHTML).toEqual('25');
    jasmine.clock().uninstall();
  });

最新更新