2015-10-09 4 views
11

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

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

BTW, я знаю про Транспортер и сквозное тестирование, но это не то, что я ищу здесь.


Update 14 октября 2016:

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

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

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

+0

Проверьте Jasmine-JQuery, вы можете использовать setF ixtures для создания некоторого пользовательского интерфейса: https://github.com/velesin/jasmine-jquery – Andrew

+0

Согласно члену основной команды Aurelia, это еще не поддерживается. См. Https://github.com/aurelia/framework/issues/230. – Sylvain

ответ

2

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

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


Вот тестовый модуль для пользовательского элемента: https://github.com/aurelia/templating/blob/master/test/behavior-testing.js#L57

Чтобы получить доступ к фактическому DOM элемента, используйте инъекции зависимостей контейнер Аурелии:

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; 
+0

Спасибо. В тесте, который вы указали мне, не используется элемент «Элемент». Если я попытаюсь получить «Элемент», введенный как в ваш образец, я получаю сообщение об ошибке, когда aurelia пытается создать экземпляр объекта типа «Элемент», вызывая конструктор 'Element()' во время 'BehaviorInstance.createForUnitTest()'. Если я установил точку останова в первой строке моего теста и выполнил 'Element()' в консоли, я получаю ту же ошибку, что и aurelia: 'Uncaught TypeError: Illegal constructor'. – Sylvain

+0

Хмм - Я думаю, что это должно сработать - сделаю некоторые исследования и вернусь к вам. –

+0

Хорошо. Большое спасибо. – Sylvain

Смежные вопросы