2013-03-03 18 views
7

के लिए परीक्षण अभ्यास यह तकनीक का इतना सवाल नहीं है; मुझे लगता है कि बहुत से लोग Mocha का उपयोग कर रहे हैं, जो साफ दिखता है, इसलिए मैं इसे आज़माउंगा।उल्का

मैं क्या सोच रहा हूं कि लोगों को मीटरी संग्रह से जुड़े मॉडल जैसे परीक्षण चीजों से कैसे निपटना है। डेटाबेस रिकॉर्ड मैक करने के लिए आप sinon का उपयोग करेंगे? क्या फ्रेमवर्क फाइलें हैं जिन्हें आप require का उपयोग करके लोड करेंगे ताकि आप Meteor.Collection का उपयोग कर सकें?

संपादित

अधिक विशिष्ट होना करने के लिए, मैं कई Minimongoid मॉडल का उपयोग करता है एक अनुप्रयोग लिख रहा हूँ। यदि आपने इनमें से एक देखा है, तो आप जानते हैं कि प्रत्येक मॉडल की @_collection संपत्ति new Meteor.Collection(...) है।

डेटाबेस रिकॉर्ड के बजाय मॉडल रखने के मुख्य लाभों में से एक यह है कि आप इसके साथ व्यवहार संलग्न कर सकते हैं, और वह व्यवहार वह है जिसे मैं परीक्षण करने की कोशिश कर रहा हूं।

तो मान लें कि आपके पास बोर्ड पर दो टुकड़े शामिल एक गेम है। जब खिलाड़ी एक टुकड़े पर क्लिक करता है, तो हम वर्गों को हाइलाइट करके बोर्ड पर सभी कानूनी चाल दिखाना चाहते हैं। टुकड़े में एक विधि है जो यह निर्धारित करती है कि कोई स्थान एक कानूनी चाल का गठन करता है या नहीं, यह टुकड़ा कैसे चलता है और इसके रास्ते में अन्य टुकड़े हैं या नहीं; निर्धारित करने वहाँ रास्ते में टुकड़े कर रहे हैं कि क्या शायद एक डेटाबेस क्वेरी की आवश्यकता है:

  1. मॉक:

    class Piece extends Minimongoid 
        @_collection: new Meteor.Collection('pieces') 
    
        @find: (selector = {}, options = {}) -> 
        document = @_collection.findOne(selector, options) 
        if document 
         model = new @(document) 
         _.extend(model, model.attributes) 
    
        @where: (selector = {}, options = {}) -> 
        @_collection.find(selector, options).map (record) => 
         model = new @(record) 
         _.extend(model, model.attributes) 
    
    class Bishop extends Piece 
        @code: "bishop" 
    
        isLegalMove: (location) -> 
        @isOnMyPath(location) && @noPiecesInMyWay(location) 
    
        noPiecesInMyWay: (location) -> 
        _.all Piece.where({ color: @otherColor() }), (piece) -> 
         !piece.isOnMyPath(location) || (piece.location == location && piece.color == @otherColor()) 
    

    तो अगर मैं एक परीक्षण ढांचे के साथ इस वर्ग लोड, मैं वास्तव में केवल दो विकल्प इस कोड के परीक्षण के लिए देख sinon

  2. Have उल्का की तरह कुछ (या इसके भागों) के साथ @_collection वस्तु परीक्षण ढांचे द्वारा लोड इतना है कि अपने मॉडल Meteor.Collection
की पहुंच है

अद्यतन

एक साल के बारे में बाद में मैं वापस इस के लिए आया था और परीक्षण करने का सुझाव दिया तरीकों में से कुछ बाहर की कोशिश की।

मैंने RTD पर एक नज़र डाली, जो उपलब्ध सभी समाधानों में से सबसे पूरा प्रतीत होता था, लेकिन मैं इसे चलाने के लिए नहीं मिला।

मैंने Laika पर भी एक नज़र डाली, लेकिन वास्तव में वाक्यविन्यास की परवाह नहीं थी। मैं एक बीडीडी शैली वाक्यविन्यास चाहता हूं, और लाइक जो ऑफर करता है वह तुलनात्मक रूप से तुलनात्मक रूप से दिख रहा है।

कुछ परीक्षण और त्रुटि के बाद, हालांकि, मैं काम करने के लिए meteor-mocha-web प्राप्त करने में सक्षम था, और अब तक मैं इससे बहुत खुश हूं। यह आपके ऐप को चलाता है और आपकी टेस्ट फाइलों में खींचता है, इसलिए ढांचे के किसी हिस्से को नकल करने की कोई ज़रूरत नहीं है। यह निश्चित रूप से बिल्कुल सही है, लेकिन यह पहली बात है कि मैं दौड़ने में सक्षम था और इसमें सिंटैक्स मुझे पसंद है, इसलिए यह जीतता है। उत्तर के लिए jagill के लिए धन्यवाद!

+0

जबकि मैं मानता हूँ कि बड़े कोड आधार के लिए परीक्षण एक प्राथमिकता है, मैं थोड़ा उल्का पर परीक्षण के बारे में उलझन में हूँ क्योंकि, मेरा मानना ​​है कि यह एमवीपी के लिए एक दर्शन गले लगाती है। क्या आपको लगता है कि उल्का के आधार पर परीक्षण बेहद जरूरी हैं? क्या आप उत्पादन में शामिल होने के लिए उल्का का उपयोग करके बड़े पैमाने पर ऐप बनाने की योजना बना रहे हैं? – Prashant

+0

जबकि ऐसा लगता है कि आप परीक्षण की योग्यता के बारे में मुझे लौ युद्ध में झुका रहे हैं, तो मैं देखूंगा कि मैं बटन को दबाए बिना हुक काट सकता हूं या नहीं। इससे कोई फर्क नहीं पड़ता कि ऐप बड़े पैमाने पर है और उत्पादन में जा रहा है; क्या मायने रखता है कि जैसे ही मैं उन्हें बनाउंगा, मैं अपनी बग्स को खोजना चाहता हूं, क्योंकि वे इस तरह से ठीक करने के लिए बहुत आसान हैं। मेरे मामले में, मैं कई मिनिमॉन्गॉइड मॉडल का उपयोग कर रहा हूं जिनमें जटिल तर्क है जो उनके व्यवहार को निर्देशित करता है; कुछ गलत होने के लिए बहुत सारे अवसर हैं, और ऐप के माध्यम से क्लिक करके परीक्षणों का उपयोग करके मेरे कोड को ड्राइव करना आसान है। – Samo

+0

न केवल यह आसान है, बल्कि यह भी तेज़ और अधिक प्रभावी है। – Samo

उत्तर

3

हमारे ऐप, MadEye.io का परीक्षण करने का प्रयास करते समय हमने इसी तरह की समस्याओं में भाग लिया है। बहुत सारे चलने वाले हिस्सों और किनारे के मामले हैं, इसलिए एक स्वचालित स्वीट आवश्यक थे। सत्र, उल्का। चयन, जमा, इत्यादि सहित उल्का संदर्भ में परीक्षण को सक्षम करने के लिए हमने पैकेज meteor-mocha-web बनाया है। हमने इसे मीटोर के देवशाला 0 में Lightning Talk भी संक्षेप में समझाया।

यह प्रारंभिक दौर है, लेकिन यह हमारे लिए अमूल्य रहा है, और इसे और अधिक उपयोग-मामले को कवर के रूप में लोगों को उन की जरूरत है।

+0

धन्यवाद चाहते हो सकता है,! – Samo

+0

क्या एक उल्का ढांचा है जो एएस 6 आयात या नकली नकल कर सकता है? – Gobliins