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

How to access the DOM Element in an aurelia unit test?

本文关键字:访问 DOM 元素 单元测试 aurelia      更新时间:2023-09-26

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

我读了这篇文章,这篇文章谈到了实例化自定义元素的点,但我认为我不能得到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>

2015年11月16日编辑:

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


下面是一个自定义元素的单元测试: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;