Подтвердить что ты не робот

Как получить доступ к элементу DOM в aurelia unit test?

В unit test, как я могу создать экземпляр пользовательского элемента (или просмотреть) и получить доступ к элементу live DOM?

Я прочитал эту статью, которая доходит до того момента, когда создается пользовательский элемент, но я не думаю, что могу попасть в DOM элемент.

Кстати, я знаю о Protractor и сквозном тестировании, но это не то, что я ищу здесь.


Обновление 14 октября 2016 года:

Я узнал, что могу зарегистрировать такой экземпляр, чтобы сделать работу @inject(Element):

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

хотя инъекция работает (мой тестовый элемент получает контрольную ссылку), что не приводило к тому, что aurelia ничего не делал с элементом. Мой пользовательский шаблон элемента не использовался, поэтому элемент innerHtml равен <div></div>.

4b9b3361

Ответ 1

Редактировать 11/16/2015:

Мы изучаем способы создания интеграционных тестов, в которых используются фактические элементы DOM, поскольку мы создаем более надежный набор тестов для некоторых встроенных пользовательских элементов/атрибутов. Оформить покупку в эту ветку для получения более подробной информации.


Здесь unit test для настраиваемого элемента: 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;
  }
}

Unit test будет иметь что-то вроде этого:

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