2015-08-21 9 views
9

मैं एक घटक एकीकरण परीक्षण, एक ला this blog post लिखने की कोशिश कर रहा हूं, लेकिन मेरे घटक में एक गतिशील मार्ग पर link-to है और href संपत्ति भर नहीं रही है मैं जो करने की कोशिश कर रहा हूं उसका सरलीकृत संस्करण यहां दिया गया है।एम्बर घटक एकीकरण टेस्ट: 'लिंक-टू' href खाली

मेरे घटक के टेम्पलेट:

this.set('model', { 
    id: 'myId', 
    name: 'My Name' 
}); 

this.render(hbs` 
{{my-component model=model}} 
`); 

assert.equal(this.$('a').attr('href'), '/myModel/myId'); // fails 

link-to प्रदान की गई है, बस एक href विशेषता के बिना:

{{#link-to "myModel" model}} 

और यहाँ अपने परीक्षण के प्रासंगिक हिस्सा है। मैं परीक्षण में HTML लॉग इन करते हैं, ऐसा लगता है:

<a id="ember283" class="ember-view">My Name</a> 

वहाँ कुछ मैं अपने "मॉडल" link-to एक href के लिए प्राप्त करने के लिए करने के लिए क्या करने की जरूरत है? मैंने एम्बर में link-to के परीक्षणों को देखने की कोशिश की, और this part of the tests पाया, जो मूल रूप से मैं कर रहा हूं - id कुंजी सेट के साथ एक POJO प्रदान करें। कोई विचार?

संपादित करें:

DEBUG: ------------------------------- 
DEBUG: Ember  : 1.13.8 
DEBUG: Ember Data : 1.13.10 
DEBUG: jQuery  : 1.11.3 
DEBUG: ------------------------------- 
+0

यह एकीकरण परीक्षण या इकाई परीक्षण है? –

+0

@Daniel: एकीकरण परीक्षण –

उत्तर

11

बाहर निकलता है आप राउटर को देख सकते हैं और इसे अपने परीक्षण सेटअप में रूटिंग शुरू करने के लिए कह सकते हैं और यह काम करेगा। this commit @rwjblue से से:

// tests/helpers/setup-router.js 

export default function({ container }) { 
    const router = container.lookup('router:main'); 
    router.startRouting(true); 
} 


// tests/integration/components/my-component-test.js 

import { moduleForComponent, test } from 'ember-qunit'; 
import hbs from 'htmlbars-inline-precompile'; 
import setupRouter from '../../helpers/setup-router'; 

moduleForComponent('my-component', 'Integration | Component | my component', { 
    integration: true, 
    setup() { 
    setupRouter(this); 
    } 
}); 
+3

धन्यवाद, अब मैं 'href' देख सकता हूं, लेकिन एक और त्रुटि 'TypeError: संपत्ति को नहीं पढ़ा जा सकता है' अपरिभाषित 'किया गया परीक्षण' परीक्षण से गुजरने से रोकता है –

0

एंबर किस संस्करण का उपयोग कर रहे हैं? मुझे पहले यह देखना याद है और अब यह मेरे ऐप में काम करता है (हालांकि मैं 1.13.8 का उपयोग कर रहा हूं)।

मेरे आवेदन में href जोड़ने के लिए लगता है, और this computed property पर आधारित यह tagName "ए" है, तो इसे देखने के लिए बाध्य होना चाहिए।

एम्बर को अपग्रेड करने के अलावा, यह शायद एम्बर-फीडल या रेपो बनाने के लिए सबसे अच्छा है और अगर यह बनी रहती है तो एक बग फ़ाइल करें।

आप https://github.com/intercom/ember-href-to पर भी एक नज़र डालना चाहते हैं।

+0

मैंने प्रश्न में एम्बर संस्करण की जानकारी जोड़ा (मैं 1.13.8 पर भी हूं), और मेरे आवेदन में 'href' के जोड़े जाने में कोई समस्या नहीं है - वे केवल परीक्षण में गायब हैं। –

1

तुम सिर्फ जांच करने के लिए href ठीक है चाहते हैं, यह बेहतर इस्तेमाल setupRouter बजाय startRouting हो सकता है। startRouting आरंभिक यूआरएल में प्रारंभिक संक्रमण को संभालने का प्रयास करता है, और यह समस्याग्रस्त हो सकता है।

// tests/helpers/setup-router.js 
export default function({ container }) { 
const router = container.lookup('router:main'); 
    router.setupRouter(); 
} 

https://github.com/emberjs/ember.js/blob/d487061228a966d8aac6fa94a8d69abfc3f1f257/packages/ember-routing/lib/system/router.js#L202

संबंधित मुद्दे