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

Javascript 如何在aurelia单元测试中访问DOM元素?,javascript,aurelia,Javascript,Aurelia,在单元测试中,如何实例化自定义元素(或视图)并获得对活动DOM元素的访问权 我读到了自定义元素被实例化的地方,但我认为我无法访问DOM元素 顺便说一句,我知道量角器和端到端测试,但这不是我在这里要找的 2016年10月14日更新: 我发现我可以注册这样一个实例,使@inject(Element)工作: container = new Container().makeGlobal(); container.registerInstance(Element, document.createElem

在单元测试中,如何实例化自定义元素(或视图)并获得对活动DOM元素的访问权

我读到了自定义元素被实例化的地方,但我认为我无法访问DOM元素

顺便说一句,我知道量角器和端到端测试,但这不是我在这里要找的


2016年10月14日更新:

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

container = new Container().makeGlobal();
container.registerInstance(Element, document.createElement('div') );
vm = BehaviorInstance.createForUnitTest(Test, {}, {});
尽管注入工作正常(我的测试自定义元素得到了引用),但这并没有导致aurelia对该元素做任何事情。我的自定义元素的模板尚未使用,因此该元素的
innerHtml

编辑2015年11月16日: 我们正在探索创建使用实际DOM元素的集成测试的方法,为一些内置的自定义元素/属性构建更健壮的测试套件。有关更多详细信息,请签出中的提交


下面是自定义元素的单元测试:

要访问实际的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;

谢谢您指给我的单元测试没有使用
元素
。如果我试图像在您的示例中那样注入
元素
,那么当aurelia试图在
BehaviorInstance.createForUnitTest()
期间通过调用
元素()
构造函数来实例化
元素
类型的对象时,我会遇到一个错误。如果我在测试的第一行设置一个断点,并在控制台中执行
Element()
,我会得到与aurelia相同的错误:`Uncaught TypeError:非法构造函数`。嗯-我认为这应该可以工作-会做一些研究,然后返回给您。查看Jasmine JQuery,您可以使用setfixture来创建一些UI:根据Aurelia核心团队成员的说法,这还不受支持。看见