Javascript EmberJS:测试组件html而不渲染

Javascript EmberJS:测试组件html而不渲染,javascript,ember.js,Javascript,Ember.js,据我所知,glimmer,embers新的渲染引擎,有一种虚拟dom实现,它正在扩散变化,并根据这些变化更新UI。为了在我们的测试中获得一些速度,我认为应该可以使用这个虚拟dom来测试一个组件,而无需在浏览器/phantomjs中呈现它。在我的常规集成测试中,我会这样做: it('shows a textarea', function(){ this.render(hbs`{{my-component}}`); // don't render here const $textarea =

据我所知,glimmer,embers新的渲染引擎,有一种虚拟dom实现,它正在扩散变化,并根据这些变化更新UI。为了在我们的测试中获得一些速度,我认为应该可以使用这个虚拟dom来测试一个组件,而无需在浏览器/phantomjs中呈现它。在我的常规集成测试中,我会这样做:

it('shows a textarea', function(){
  this.render(hbs`{{my-component}}`); // don't render here
  const $textarea = this.$('textarea');
  expect($textarea).to.have.length(1);
});
所以我的问题是,是否有一种方法可以在单元/集成测试中访问这个虚拟dom


感谢

Glimmer是内部代码,它看起来不像DOM,它维护着渲染状态、变形和流的树。我真的不知道你会从中得到什么好处。我相信您可能误会了虚拟dom的名称,它更多的是一个概念和技术,而不是一些具体的东西。我希望在集成测试中获得一些速度,因为如果ember已经“呈现”了我的组件(虚拟dom)然后我不需要在dom中重新命名它,然后用jquery查询dom,这就是术语“虚拟dom”的误导之处。尽管名称不同,但它不是dom,并且没有进行渲染。Glimmer只是维护一个,根本没有dom。这项技术的全部要点就是避免渲染。也许我完全弄错了,但是当查看图片时,流树的结构与dom本身完全相同。因此,根据这张图片,应该可以从流树中获取关于实际dom的信息(例如,此组件中是否有textearea节点),而无需将流树渲染到dom。您可以提取部分信息,但这样做将1)过于复杂,2)取决于Glimmer的内部工作,3)与dom没有任何相似之处。以下是渲染节点的外观(从调试器粘贴副本):。(元素是实际的DOM元素,因为快照是从完全渲染的节点获取的)