如何将DOM元素附加到角度2 TestBed?

时间:2017-06-20 17:57:25

标签: angular typescript angular2-testing

为了切入追逐,我想知道是否有办法将DOM元素添加到测试DOM中。我刚接触测试,但有点像fixture.degugElement.prepend('div')。从我对测试的了解可能会发现一个设计缺陷,所以如果你想要一些理由,我已经在下面添加了原因。

为什么我需要这样做:

在我的应用程序中,我有一个类似于this之前版本的文本自动收录器指令。为了功能我必须测量文本的长度。为了达到这个目的,我创建了一个ghost元素,并将其粘贴在AppComponent

@Component({
  selector: 'app-root',
  template: `
    <div id="ghost"></div> <!-- THIS IS THE GUY I NEED -->
    <div class="main-area">
      <router-outlet></router-outlet>
    </div>
  `,
  styleUrls: ['./app.component.scss']
})

不幸的是,由于正确测量它所需的css定位,我需要这个元素,但这意味着它在我的测试中不可用。

1 个答案:

答案 0 :(得分:1)

看起来像这样:

const newTemplate = `<div id="ghost"></div>${oldTemplate}`

...

beforeEach(async(() => {
  TestBed.configureTestingModule({
    declarations: [ComponentUnderTest],
    // ... more module stuff
  }).overrideTemplate(ComponentUnderTest, newTemplate )
  .compilecomponents();
}));