单元测试角度

时间:2018-02-10 16:30:34

标签: angular testing scroll scrollview karma-runner

在Angular 2+中单元测试scrollintoview()方法时,我收到错误 - > "失败:无法读取属性' scrollIntoView'未定义"在Angular 2 +

这是我的scrollintoview代码:

 document.getElementsByClassName('class')[0].scrollIntoView();

有关如何通过执行脚本解决此问题的任何想法?

2 个答案:

答案 0 :(得分:0)

可能一年后才回答这个问题。

这是测试document.getElementsByClassName('someDiv')[0].scrollIntoView({...})

的解决方案之一

您可以创建一个spyOn

spyOn(document.getElementsByClassName('someDiv')[0], 'scrollIntoView').and.callThrough(); 

然后期望scrollIntoView被调用

expect(document.getElementsByClassName('someDiv')[0].scrollIntoView).toHaveBeenCalled();

为确保您的document.getElementsByClassName('someDiv')[0]处于未定义状态,请增加期望值:

expect(document.getElementsByClassName('someDiv')[0]).not.toBeDefined();

答案 1 :(得分:0)

你好,这个方法我试过了

  1. 我已经定义了要滚动到的元素

.wrapper {
  border: 4px dotted rgb(96, 139, 168);
  width: 500px;
}

.box {
  display: flex;
  flex-wrap: wrap;
  margin:-10px;
}

.box>* {
  flex: 1 1 160px;
  margin: 10px;
  /*presentation styles*/
  background-color:#4a56cada;
  color:white;
  height:40px;
}

  1. 我已经在我的组件中定义了一个 viewChild 以及我用来滚动的方法

<div class="wrapper">
      <div class="box">
        <div>One</div>
        <div>Two</div>
        <div>Three</div>
        <div>Four</div>
        <div>Five</div>
        <div>Six</div>
        <div>Seven</div>
        <div>Eight</div>
        <div>Nine</div>
        <div>Ten</div>
      </div>
  </div>

  1. 然后在我的测试中

   

 <div #highlightsContainer>... </div>