如何在aurelia单元测试中访问DOM元素?

Syl*_*ain 11 javascript aurelia

在单元测试中,如何实例化自定义元素(或视图)并访问实时 DOM元素?

我读到了这篇文章,它实现了自定义元素的实例化,但我认为我无法访问DOM元素.

顺便说一下,我知道Protractor和端到端测试,但这不是我在这里寻找的.


2016年10月14日更新:

我发现我可以注册这样的实例来完成@inject(Element)工作:

container = new Container().makeGlobal();
container.registerInstance(Element, document.createElement('div') );
vm = BehaviorInstance.createForUnitTest(Test, {}, {});
Run Code Online (Sandbox Code Playgroud)

虽然注入工作(我的测试自定义元素得到参考),但这并没有导致aurelia对元素做任何事情.我的自定义元素的模板尚未使用,因此元素innerHtml<div></div>.

Jer*_*yow 2

2015 年 11 月 16 日编辑:

当我们为一些内置的自定义元素/属性构建更强大的测试套件时,我们正在探索创建使用实际 DOM 元素的集成测试的方法。查看此分支中的提交以获取更多详细信息。


这是自定义元素的单元测试: https://github.com/aurelia/templated/blob/master/test/behavior-testing.js#L57

要访问实际的 DOM 元素,请使用 Aurelia 的依赖注入容器:

import {inject} from 'aurelia-framework';

@inject(Element)
export class MyViewModelOrCustomElementOrAttribute {
  constructor(element) {
    // use the element
    this.element = element;
  }
}
Run Code Online (Sandbox Code Playgroud)

单元测试会有这样的内容:

let myvm =BehaviorInstance.createForUnitTest(MyViewModelOrCustomElementOrAttribute, attributesFromHTML, bindingContext);
let actualDomElement = myvm.element;
Run Code Online (Sandbox Code Playgroud)