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

时间:2015-10-09 22:55:41

标签: javascript aurelia

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

我阅读了this article,它实现了自定义元素的实例,但我不认为我可以访问DOM元素。

顺便说一句,我知道有关量角器和端对端测试,但这不是我在这里寻找的。

2016年10月14日更新:

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

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

虽然注入工作(我的Test自定义元素获得引用),但这并不会导致aurelia对元素执行任何操作。我的自定义元素模板尚未使用,因此元素innerHtml<div></div>

1 个答案:

答案 0 :(得分:2)

2015年11月16日编辑:

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

这是自定义元素的单元测试: https://github.com/aurelia/templating/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;
  }
}

单元测试会有类似的结果:

let myvm =BehaviorInstance.createForUnitTest(MyViewModelOrCustomElementOrAttribute, attributesFromHTML, bindingContext);
let actualDomElement = myvm.element;