उल्का परीक्षण संचालित विकास [बंद]


120

मैं यह नहीं देखता कि उल्का में परीक्षण संचालित विकास कैसे किया जाए।

मैं इसे कहीं भी प्रलेखन या अक्सर पूछे जाने वाले प्रश्न में उल्लेखित नहीं देखता हूं। मुझे ऐसा कोई उदाहरण या कुछ भी दिखाई नहीं दे रहा है।

मैं देख रहा हूं कि कुछ पैकेज टिनिटेस्ट का उपयोग कर रहे हैं।

मुझे डेवलपर्स से प्रतिक्रिया की आवश्यकता होगी, इस बारे में रोडमैप क्या है। की तर्ज पर कुछ:

  • संभव है, कोई दस्तावेज़ीकरण न हो, इसे स्वयं समझ लें
  • उल्का इस तरह से नहीं बनाया जाता है कि आप परीक्षण योग्य ऐप बना सकें
  • यह नियोजित सुविधा है
  • आदि

4
xolv.io ब्लॉग पर एक नज़र डालें , जैसा कि नीचे उल्लेख किया गया है, उल्का का उपयोग करके उचित यूनिट + एंड-टू-एंड टीडीडी करने के उदाहरण हैं।
Xolv.io

आपके प्रश्न के लहजे से, ऐसा लगता है कि आपको आभास होता है कि उल्का से काफी गायब है। एक तरह से यह है, लेकिन environment.meteor.com में उन अधिकांश चीजों को करने के लिए पैकेज हैं जिन्हें आप एक तैयार प्रारूप में मौजूदा जेएस पुस्तकालयों को बंडल करके सोच सकते हैं। यह meteor.com, IMHO पर अधिक भारी से जोड़ा जा सकता है।
पाइपड्रीमबॉम्ब

5
आपको laika
arunoda.github.io/laika

1
वर्तमान में उल्का परीक्षण एक गड़बड़ है। अपडेट के लिए trello.com/c/BQ3gu0no/12-official-testing-framework देखें ।
एंड्रयू माओ

जवाबों:


83

अद्यतन 3 : उल्का 1.3 के रूप में, उल्का में इकाई, एकीकरण, स्वीकृति और लोड परीक्षण के चरण-दर-चरण निर्देशों के साथ एक परीक्षण मार्गदर्शिका शामिल है ।

अपडेट 2 : 9 नवंबर 2015 तक वेलोसिटी अब नहीं कायम है । Xolv.io पर अपने प्रयासों को ध्यान दे रहा है चिम्प , और उल्का विकास समूह के एक अधिकारी परीक्षण ढांचे का चयन करना होगा

अपडेट : वेग है उल्का की आधिकारिक परीक्षण समाधान 0.8.1 के रूप में।


इस समय उल्का के साथ स्वचालित परीक्षण के बारे में बहुत कुछ नहीं लिखा गया है। मुझे उम्मीद है कि आधिकारिक दस्तावेज में कुछ भी स्थापित करने से पहले उल्का समुदाय परीक्षण सर्वोत्तम प्रथाओं का विकास करेगा। आखिरकार, उल्का इस सप्ताह 0.5 पर पहुंच गई, और चीजें अभी भी तेजी से बदल रही हैं।

अच्छी खबर: आप उल्का के साथ Node.js परीक्षण उपकरण का उपयोग कर सकते हैं

अपने उल्का प्रोजेक्ट के लिए, मैं मुखरता के लिए चाय का उपयोग करते हुए मोचा के साथ अपनी इकाई परीक्षण चलाता हूं । यदि आपको चाई के पूर्ण सुविधा सेट की आवश्यकता नहीं है, तो मैं इसके बजाय should.js का उपयोग करने की सलाह देता हूं । मेरे पास इस समय केवल यूनिट परीक्षण हैं, हालांकि आप मोचा के साथ एकीकरण परीक्षण भी लिख सकते हैं।

अपने परीक्षणों को "परीक्षण" फ़ोल्डर में रखना सुनिश्चित करें ताकि उल्का आपके परीक्षणों को निष्पादित करने का प्रयास न करे।

मोचा कॉफ़ीस्क्रिप्ट का समर्थन करता है , उल्का परियोजनाओं के लिए स्क्रिप्टिंग भाषा की मेरी पसंद। यहां आपके मोचा परीक्षणों को चलाने के लिए कार्यों के साथ एक नमूना केकफाइल है । यदि आप जेएस का उल्का के साथ उपयोग कर रहे हैं, तो बेझिझक कमांड को मेफाइल के लिए अनुकूलित करें।

अपने उल्का मॉडल को मोचा को उजागर करने के लिए थोड़ा सा संशोधन की आवश्यकता होगी, और इसके लिए यह आवश्यक है कि Node.js कैसे काम करता है। प्रत्येक Node.js फ़ाइल को अपने दायरे में निष्पादित होने के रूप में सोचें। उल्का स्वचालित रूप से अलग-अलग फ़ाइलों में वस्तुओं को एक-दूसरे के लिए उजागर करती है, लेकिन साधारण नोड अनुप्रयोग-जैसे मोचा-ऐसा न करें। मोचा द्वारा हमारे मॉडल को परीक्षण योग्य बनाने के लिए, प्रत्येक कॉफी मॉडल को निम्न कॉफीस्क्रिप्ट पैटर्न के साथ निर्यात करें :

# Export our class to Node.js when running
# other modules, e.g. our Mocha tests
#
# Place this at the bottom of our Model.coffee
# file after our Model class has been defined.
exports.Model = Model unless Meteor?

... और अपने मोचा परीक्षण के शीर्ष पर, उस मॉडल को आयात करें जिसे आप परीक्षण करना चाहते हैं:

# Need to use Coffeescript's destructuring to reference
# the object bound in the returned scope
# http://coffeescript.org/#destructuring
{Model} = require '../path/to/model'

इसके साथ, आप अपने उल्का परियोजना के साथ इकाई परीक्षण लिखना और चलाना शुरू कर सकते हैं!


2
मैंने यह कोशिश की है और समस्याओं में चला जाता है जब परीक्षण के तहत मेरा कोड किसी भी Meteor.whateverफ़ंक्शन का उपयोग करता है। मुझे लगता है उल्का अपरिभाषित त्रुटियाँ हैं। क्या इसके आसपास पाने के लिए उल्का की आवश्यकता है?
क्रिश्चियन श्लेन्सकर

2
ईसाई, मेरे उत्तर में वर्णित दृष्टिकोण इस समय अधूरा है, क्योंकि यह आपके उल्का अनुप्रयोग का पूर्ण उदाहरण नहीं चलाता है। नतीजतन, Meteorऑब्जेक्ट दुर्गम है, जैसा कि उल्का द्वारा किसी भी मॉडल निर्भरता को उजागर किया जाता है। इस प्रक्रिया में सुधार करने से मोचा के भीतर अनुप्रयोग के वातावरण को तत्काल बनाना, और Meteorआपके परीक्षणों के उद्देश्य को उजागर करना शामिल होगा । एक बार मेरे पास एक पूर्ण परीक्षण समाधान होने के बाद मैं इस उत्तर को अपडेट करना सुनिश्चित करूंगा। इस बीच, कृपया किसी भी प्रश्न या सुझाए गए सुधार के साथ मुझसे संपर्क करने में संकोच न करें।
ब्लैककोट

@ChristianSchlensker: यदि आप क्लाइंट पक्ष पर कार्यात्मक / इकाई परीक्षण के लिए मोचा का उपयोग करते हैं तो आपके पास उल्का पिंड उपलब्ध हैं। नीचे दिए गए मेरे उत्तर में नमूना कोड देखें।
जेरिको

@ जेरिको हाँ जो अच्छा लग रहा है, सर्वर साइड कक्षाओं में से किसी के लिए काम नहीं करेगा। इसके अलावा, मुझे मोचा-वॉच सभी इकाई परीक्षण पर हर समय चलना पसंद है। वे इतनी तेज़ सर्वर साइड चलाते हैं कि यह वास्तव में अच्छा परीक्षण प्रतिक्रिया के लिए बनाता है।
क्रिश्चियन श्लेन्सकर

1
1.3 परीक्षण के रूप में अब उल्का में उपलब्ध है, guide.meteor.com
bigmadwolf

44

हाय सब चेकआउट लाईका - उल्का के लिए नया परीक्षण ढांचा http://arunoda.github.io/laika/

आप एक ही बार में सर्वर और क्लाइंट दोनों का परीक्षण कर सकते हैं।

डिस्क्लेमर: मैं लेखिका हूं।


हाय अरुणोदा। मैं उल्का के लिए आपकी कड़ी मेहनत की सराहना करता हूं। यहाँ StackOverflow में आपको एक डिस्क्लेमर के रूप में इंगित करना चाहिए कि आप laika के पीछे एक हैं, हालाँकि।
nalply से

5
क्या ऐसा करने का तरीका है?
अरुणोदा सुसीरिपला

1
आपके सहयोग के लिए धन्यवाद।
नागवार

14

मुझे पता है कि यह सवाल पहले से ही उत्तर दिया गया है, लेकिन मुझे लगता है कि यह कुछ और संदर्भ का उपयोग कर सकता है, एक अतिरिक्त उत्तर के रूप में कहा गया है।

मैं उल्का के साथ कुछ अनुप्रयोग विकास कर रहा हूं, साथ ही साथ पैकेज विकास, दोनों उल्का कोर के लिए एक पैकेज को लागू करने के साथ-साथ वातावरण के लिए भी कर रहा हूं ।

ऐसा लगता है कि आपका प्रश्न वास्तव में तीन भागों में एक प्रश्न हो सकता है:

  1. एक पूरे उल्का परीक्षण सूट को कैसे चलाता है?
  2. कोई व्यक्ति अलग-अलग स्मार्ट पैकेज के लिए परीक्षण कैसे लिखता है और चलाता है ?
  3. कोई अपने आवेदन के लिए परीक्षण कैसे लिखता है और कैसे चलाता है?

और, यह भी लगता है कि वहाँ कहीं एक बोनस सवाल हो सकता है: 4. 1, 2, और 3 के लिए कोई निरंतर एकीकरण कैसे लागू कर सकता है?

मैं बात कर रहा हूं और इन सभी सवालों के निश्चित उत्तर प्राप्त करने में मदद करने के लिए उल्का कोर टीम पर नाओमी सेफर (@sixolet) के साथ सहयोग करना शुरू कर दिया है ।

मैंने 1 और 2 को उल्का कोर से एक प्रारंभिक पुल अनुरोध प्रस्तुत किया था: https://github.com/meteor/meteor/pull/573

मैंने हाल ही में इस प्रश्न का उत्तर दिया था: आप उल्का परीक्षण कैसे चलाते हैं?

मुझे लगता है कि @Blackcoat ने निश्चित रूप से 3, ऊपर जवाब दिया है।

बोनस के लिए, 4, मैं आपको अपने स्वयं के ऐप्स के लिए निरंतर एकीकरण करने के लिए Circleci.com का उपयोग करने का सुझाव दूंगा । वे वर्तमान में @Blackcoat द्वारा वर्णित उपयोग मामले का समर्थन करते हैं। मेरे पास एक परियोजना है जिसमें मैंने सफलतापूर्वक मोक्ष के साथ यूनिट परीक्षण चलाने के लिए कॉफिसस्क्रिप्ट में लिखे गए परीक्षणों को प्राप्त किया है, जैसा कि @Blackcoat ने वर्णन किया था।

उल्का कोर, और स्मार्ट पैकेज पर निरंतर एकीकरण के लिए, नाओमी सेफर और मैं सर्कलसी के संस्थापक के साथ बातचीत कर रहे हैं कि क्या हम निकट अवधि में कुछ भयानक लागू कर सकते हैं।


12

आरटीडी को अब हटा दिया गया है और वेलोसिटी द्वारा प्रतिस्थापित किया गया है, जो कि मेट्योर 1.0 के लिए आधिकारिक परीक्षण ढांचा है। दस्तावेज़ीकरण अभी भी अपेक्षाकृत नया है क्योंकि वेग भारी विकास के अधीन है। आप Velocity Github repo , Velocity होमपेज और उल्का परीक्षण मैनुअल (भुगतान की गई सामग्री) के बारे में कुछ और जानकारी प्राप्त कर सकते हैं

अस्वीकरण: मैं वेलोसिटी के कोर टीम के सदस्यों और पुस्तक के लेखक में से एक हूं।


RTD की जाँच करें, यहाँ उल्का के लिए एक पूर्ण परीक्षण रूपरेखा rtd.xolv.io है । यह जैस्मीन / मोचा / कस्टम का समर्थन करता है और सादे जेएस और कॉफी दोनों के साथ काम करता है। इसमें परीक्षण कवरेज भी शामिल है जो इकाई / सर्वर / क्लाइंट कवरेज को जोड़ती है।

और यहाँ एक उदाहरण परियोजना है

यहाँ उल्का के साथ इकाई परीक्षण की व्याख्या करने के लिए एक ब्लॉग

यहां सेलेनियम वेबड्राइवर जेएस और उल्का का उपयोग करके एक e2e स्वीकृति परीक्षण दृष्टिकोण

उम्मीद है की वो मदद करदे। डिस्क्लेमर: मैं आरटीडी का लेखक हूं।


6

मैंने इस पृष्ठ का बहुत उपयोग किया और सभी उत्तरों की कोशिश की, लेकिन मेरे शुरुआती बिंदु से, मैंने उन्हें काफी भ्रमित किया। एक बार जब मुझे कोई परेशानी हुई, तो मैं उनसे झुंझला गया कि कैसे उन्हें ठीक किया जाए।

यह समाधान शुरू करने के लिए वास्तव में सरल है, अगर अभी तक पूरी तरह से प्रलेखित नहीं किया गया है, तो मैं इसे अपने जैसे लोगों के लिए सुझाता हूं जो टीडीडी करना चाहते हैं, लेकिन यह सुनिश्चित नहीं कर रहे हैं कि जावास्क्रिप्ट में परीक्षण कैसे होता है और कौन से पुस्तकालयों में प्लग इन होता है:

https://github.com/mad-eye/meteor-mocha-web

FYI करें, मैंने पाया कि मुझे राउटर एटमॉस्फियर पैकेज का उपयोग करने की आवश्यकता है ताकि परीक्षणों से परिणामों को चलाने और प्रदर्शित करने के लिए एक '/ परीक्षण' मार्ग बनाया जा सके, क्योंकि मैं नहीं चाहता था कि यह मेरे ऐप को हर बार लोड होने पर अव्यवस्थित करे।


1
तुम भी उपयोग कर सकते हैं meteor-mocha-webके साथ mocha-phantomjsस्वचालित परीक्षण के लिए और सीआई के लिए। यह हम उपयोग करते हैं। पूर्ण प्रकटीकरण - मैं अनुरक्षकों में से एक हूं meteor-mocha-web
jagill

6

टिनिटेस्ट के उपयोग के बारे में, आप उन उपयोगी स्रोतों पर एक नज़र डालना चाहते हैं:

  1. इस पेंचकस में मूल बातें बताई गई हैं: https://www.eventedmind.com/feed/meteor-testing-packages-with-tinytest

  2. एक बार जब आप इस विचार को समझ गए, तो आप चाहते हैं कि सार्वजनिक एपीआई प्रलेखन आपके लिए हो tinytest। अभी के लिए, tinytestपैकेज के स्रोत के अंत में उसके लिए एकमात्र दस्तावेज है : https://github.com/meteor/meteor/tree/devel/packages/tinytest

  3. इसके अलावा, पेंचकस के बारे में बात करता है test-helpers, आप यहाँ उपलब्ध सभी सहायकों पर एक नज़र डालना चाहते हैं: https://github.com/meteor/meteor/tree/devel/packages/test-helpers अक्सर प्रत्येक के अंदर कुछ दस्तावेज़ होते हैं फ़ाइल

  4. उल्का के पैकेज के मौजूदा परीक्षणों में खुदाई से बहुत सारे उदाहरण मिलेंगे। ऐसा करने का एक तरीका यह के लिए एक खोज बनाने के लिए है Tinytest.या test.उल्का के स्रोत कोड के पैकेज निर्देशिका में


5

आगामी 1.3 रिलीज में टेस्टिंग Meteor का मुख्य हिस्सा बन जाता है। प्रारंभिक समाधान मोचा और चाय पर आधारित है।

न्यूनतम व्यवहार्य डिजाइन की मूल चर्चा यहां पाई जा सकती है और पहले कार्यान्वयन का विवरण यहां पाया जा सकता है

एमडीजी ने परीक्षण के लिए गाइड प्रलेखन की प्रारंभिक हड्डियों का उत्पादन किया है जो यहां पाया जा सकता है , और यहां कुछ उदाहरण परीक्षण हैं

यह ऊपर दिए गए लिंक से एक प्रकाशन परीक्षण का एक उदाहरण है:

  it('sends all todos for a public list when logged in', (done) => {
    const collector = new PublicationCollector({userId});
    collector.collect('Todos.inList', publicList._id, (collections) => {
      chai.assert.equal(collections.Todos.length, 3);
      done();
    });
  });

4

मैं ब्राउज़र में उल्का + मोचा के साथ कार्यात्मक / एकीकरण परीक्षण कर रहा हूँ । मेरे पास निम्नलिखित की पंक्तियों के साथ कुछ है (बेहतर पठनीयता के लिए कॉफ़ीस्क्रिप्ट में):

ग्राहक पर ...

Meteor.startup ->
    Meteor.call 'shouldTest', (err, shouldTest) ->
        if err? then throw err
        if shouldTest then runTests()

# Dynamically load and run mocha. I factored this out in a separate method so
# that I can (re-)run the tests from the console whenever I like.
# NB: This assumes that you have your mocha/chai scripts in .../public/mocha.
# You can point to a CDN, too.
runTests = ->
    $('head').append('<link href="https://stackoverflow.com/mocha/mocha.css" rel="stylesheet" />')
    $.getScript '/mocha/mocha.js', ->
      $.getScript '/mocha/chai.js', ->
        $('body').append('<div id="mocha"> </div>')
        chai.should() # ... or assert or explain ...
        mocha.setup 'bdd'
        loadSpecs() # This function contains your actual describe(), etc. calls.
        mocha.run()

... और सर्वर पर:

Meteor.methods 'shouldTest': -> true unless Meteor.settings.noTests  # ... or whatever.

बेशक आप अपने क्लाइंट-साइड यूनिट का परीक्षण उसी तरह से कर सकते हैं। एकीकरण परीक्षण के लिए, सभी उल्का बुनियादी ढांचे के आसपास होना अच्छा है, हालांकि।


BTW: DOM तत्वों के लिए प्रतीक्षा करने के लिए यह समाधान jQuery के साथ उल्का क्लाइंट में कार्यात्मक परीक्षण करते समय काम आता है।
जेरिको 27:13

3

जैसा कि ब्लैककाउट ने कहा, वेलोसिटी उल्का के लिए आधिकारिक टीडीडी ढांचा है। लेकिन इस समय वेग के वेबपेज अच्छे प्रलेखन की पेशकश नहीं करते हैं। इसलिए मैं आपको देखने की सलाह देता हूं:


सहायक पोस्ट। लिंक साझा करने के लिए धन्यवाद।
लारन इवांस

2

एक अन्य विकल्प, 0.6.0 के बाद आसानी से उपलब्ध है, अपने पूरे ऐप को स्थानीय स्मार्ट पैकेजों से चलाने के लिए है, अपने ऐप को बूट करने के लिए पैकेजों के बाहर कोड की एक न्यूनतम न्यूनतम राशि के साथ (संभवतः एक विशेष स्मार्ट पैकेज को लागू करना जो कि आपकी नींव है। एप्लिकेशन)।

फिर आप उल्का के टिनिटेस्ट का लाभ उठा सकते हैं, जो उल्कापिंड ऐप के परीक्षण के लिए बहुत अच्छा है।


0

Ive सफलतापूर्वक अपने परीक्षण करने के लिए xolvio: ककड़ी और वेग का उपयोग कर रहा है। वास्तव में अच्छी तरह से काम करता है और लगातार चलता रहता है ताकि आप हमेशा देख सकें कि आपके परीक्षण गुजर रहे हैं।


0

उल्का + द इनटर्न

किसी तरह मैं TheIntern.js के साथ उल्का अनुप्रयोग का परीक्षण करने में कामयाब रहा।

हालांकि यह मेरी जरूरत के अनुसार है। लेकिन फिर भी मुझे लगता है कि यह किसी को सही दिशा में ले जा सकता है और इस मुद्दे को हल करने के लिए मैंने जो किया है उसे साझा कर रहा हूं।

एक executeफ़ंक्शन है जो हमें जेएस कोड थेरुग चलाने की अनुमति देता है जिसे हम ब्राउज़र windowऑब्जेक्ट तक पहुंच सकते हैं और इसलिए Meteorभी।

निष्पादन के बारे में अधिक जानना चाहते हैं

यह मेरे test suiteलिए कार्यात्मक परीक्षण है

define(function (require) {
    var registerSuite = require('intern!object');
    var assert = require('intern/chai!assert');
    registerSuite({
        name: 'index',

        'greeting form': function () {
            var rem = this.remote;
            return this.remote
                .get(require.toUrl('localhost:3000'))
                .setFindTimeout(5000)
                .execute(function() {
                        console.log("browser window object", window)
                        return Products.find({}).fetch().length
                    })
                .then(function (text) {
                    console.log(text)
                    assert.strictEqual(text, 2,
                        'Yes I can access Meteor and its Collections');
                });
        }
    });
});

अधिक जानने के लिए, यह मेरा जिस्म है

नोट: मैं इस समाधान के साथ अभी भी बहुत शुरुआती चरण में हूं। मुझे नहीं पता कि मैं इसके साथ जटिल परीक्षण कर सकता हूं या नहीं। लेकिन मैं इसके बारे में बहुत आश्वस्त हूं।


0

वेग अभी परिपक्व नहीं हुआ है। मैं वेग का उपयोग करने के लिए सेटटाइमआउट मुद्दों का सामना कर रहा हूं। सर्वर साइड यूनिट टेस्टिंग के लिए आप इस पैकेज का उपयोग कर सकते हैं ।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.