2015-10-09 23 views
11

Bir birim testinde, özel bir öğeyi (veya görüntüyü) nasıl oluşturabilirim ve canlı DOM öğesine nasıl erişebilirim?aurelia birim testinde DOM Elementine nasıl erişilir?

Özel öğenin örneklendiği noktaya ulaşan this article numarasını okudum ancak DOM öğesine ulaşabileceğimi sanmıyorum.

BTW, İletki ve uçtan uca test hakkında biliyorum, ama burada aradığım şey bu değil.


Güncelleme 14 Ekim 2016: enjeksiyon işlerinde rağmen

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

(benim Testi özel: Bu @inject(Element) çalışması için gibi bir örneğini kayıt olabilirsiniz öğrendim

element, referans öğesi alır, bu aurelia'nın elementle hiçbir şey yapmasına neden olmamıştır. Özel öğemin şablonum kullanılmadı ve bu nedenle öğenin innerHtml numarası <div></div>.

+0

Jasmine-JQuery'e göz atın, setF'yi kullanabilirsiniz Bazı UI oluşturmak için ixtures: https://github.com/velesin/jasmine-jquery – Andrew

+0

Bir Aurelia çekirdek ekip üyesine göre, bu henüz desteklenmiyor. Https://github.com/aurelia/framework/issues/230 adresine bakın. – Sylvain

cevap

2

Düzenleme 2015/11/16: Biz bazıları için daha sağlam bir test takımı geliştirmeye devam ediyoruz fiili DOM öğelerini kullanmak entegrasyon testleri oluşturmak yöntemlerini arıyoruz

yerleşik özel öğelerle/bağlıyor. Daha fazla ayrıntı için this branch numaralı sözleşmeyi kontrol edin. https://github.com/aurelia/templating/blob/master/test/behavior-testing.js#L57

, fiili DOM öğesine erişmek Aurelia'nın bağımlılık enjeksiyon kapsayıcı kullanmak için::

import {inject} from 'aurelia-framework'; 

@inject(Element) 
export class MyViewModelOrCustomElementOrAttribute { 
    constructor(element) { 
    // use the element 
    this.element = element; 
    } 
} 

Birim testi böyle bir şey olurdu Burada


bir özel öğe için bir birim test var:

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

Teşekkürler. Beni işaret ettiğin birim testi, 'Element' kullanmıyor. Eğer 'Element' örneğinizde olduğu gibi enjekte etmeye çalışırsa, aurelia, 'Eleman()' yapıcısını 'BehaviorInstance.createForUnitTest()' sırasında çağırarak, 'Element' türünde bir nesneyi başlatmaya çalıştığında bir hata alıyorum. Testimin ilk satırında bir kesme noktası belirlediysem ve konsoldaki 'Element()' komutunu çalıştırırsam, aurelia'nın yaptığı gibi aynı hatayı alıyorum: 'Uncaught TypeError: Yasa dışı kurucu '. – Sylvain

+0

hmm - Bence bu işe yarayacak, biraz araştırma yapacak ve size geri dönecek. –

+0

Tamam. Çok teşekkürler. – Sylvain

İlgili konular