2013-09-05 14 views
7

दिया गया एम्बर हाल ही में 1.0.0 पर पहुंचा, मैं परीक्षणों के साथ इसका उपयोग शुरू करना चाहता था। मैं कर्म के साथ Yeoman 1.0 का उपयोग कर रहा हूँ। मैं इकाई परीक्षण मॉडल चाहता हूं लेकिन मुझे अलगाव को पूरा करना बहुत मुश्किल लगता है।Ember.js में यूनिट परीक्षण

उदाहरण मैं अब है:

describe("Expense", function() { 
    return it("has a computed property called `explained`", function() { 
    var expense = App.Expense.create({ 
     name: "My first expense", 
     value: 34 
    }); 
    return expect(expense.get("explained")).to.equal("My first expense -- 34"); 
    }); 
}); 

1.0.0 के रूप में, मैं निम्नलिखित त्रुटि मिलती है:

Error: You should not call `create` on a model. Instead, call 
`store.createRecord` with the attributes you would like to set. 

मैं कैसे आदेश एक मॉडल उदाहरण बनाने के लिए दुकान का उपयोग करना चाहिए? अधिक आदर्श, मैं दुकानों का सहारा लेने के बिना इस तरह के मॉडल कैसे आसानी से फैला सकता हूं, क्या यह व्यवहार्य है? मॉडल, आईएमओ का परीक्षण करने के लिए सिर्फ एक संपूर्ण ऐप को बढ़ाने में कोई बात नहीं है।

धन्यवाद।

+1

केवल जिस तरह से मैं सोच सकता हूं कि ऐप .__ कंटेनर __। लुकअप ('स्टोर: मुख्य') के माध्यम से स्टोर को देखना है। शायद आप यह भी देख सकते हैं कि वे एम्बर-डेटा डीएस में कैसे करते हैं। मॉडल परीक्षण –

+0

उत्तर देने वाले लोगों के लिए, यह हैक काम करता है। इसे सुलझाने के रूप में चिह्नित करें। – josemota

उत्तर

2

@ sly7_7 की टिप्पणी के अनुसार, App.__container__.lookup('store:main') कार्यों के माध्यम से ऐप के अंदर स्टोर की तलाश में है।

+0

उन चीजों के लिए, मुझे हमेशा कोर टीम के सदस्य की सलाह लेने की उम्मीद है ... लेकिन आखिरकार, यह परीक्षण कोड नहीं है, इसलिए मुझे लगता है कि यह अच्छा है –

0

आप this.get ('दुकान') का उपयोग करना चाहिए। CreateRecord ('खर्च')

ऐसा लगता है कि आप एंबर-डाटा 1.0.0 बीटा, जो जिस तरह से चीजें काम बदल उपयोग कर रहे हैं। आपको एम्बर-डेटा प्रोजेक्ट में migration.md फ़ाइल को देखना चाहिए।

(खेद है कि मैं आपके सवाल का पढ़ा जाना चाहिए था एक सा बेहतर है - मैं इस समय एक ही समस्या हो रही है और सुझाव दिया कंटेनर समाधान मेरे लिए काम नहीं करता है - दुर्घटना ब्राउज़रों के कारण) :(

+0

यह लिखने के बाद से, मैंने पता चला है कि यह समाधान वास्तव में * मेरे लिए काम करता है, यह सिर्फ इतना है कि इसे कुनीट के परीक्षण के सेटअप फ़ंक्शन के अंदर चलाने की आवश्यकता है। –

4

यहां न्यूनतम कोड है कि मैं अब तक इकाई परीक्षण मॉडल के लिए इस्तेमाल किया गया है।

var container, store, expense; 

container = new Ember.Container(); 
container.register('store:main', DS.Store.extend()); 
container.register('model:expense', App.Expense); 
store = container.lookup('store:main'); 

Ember.run(function() { 
    expense = store.createRecord('expense', { 
    name: "My first expense", 
    value: 34 
    }); 
}); 

दुकान और the way models are tested inside Ember Data के कोड के आधार पर, मुझे नहीं लगता कि आप परीक्षण की स्थापना को कम कर सकते हैं।

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