कर्मा के साथ नोडज बैकएंड कोड का परीक्षण कैसे करें (शानदार)


87

मैं अपने बैकएंड यूनिट टेस्ट (मोचा के साथ लिखा हुआ) को चलाने के लिए कर्मा को कैसे सेट करूँ? अगर मैं अपनी बैकेंड टेस्ट स्क्रिप्ट को इसमें जोड़ता हूं files = [], तो यह बताते हुए विफल हो जाता है कि requireअपरिभाषित है।


यह कर सकते हैं : किया जा, ले अपने प्रोजेक्ट पर नज़र github.com/noamtcohen/Narma
noamtcohen

जवाबों:


83

तुम नहीं। कर्म केवल ब्राउज़र-आधारित कोड के परीक्षण के लिए है। यदि आपके पास बैकएंड पर कर्म परीक्षण और मोर्चे पर कर्म / मोचा के साथ एक परियोजना है, तो परीक्षण के लिए सेट करने के लिए स्क्रिप्ट के तहत अपने पैकेज को संपादित करने का प्रयास करें:mocha -R spec && karma run karma.con

फिर, यदि npm testयह सच है, तो आपको पता होगा कि यह प्रतिबद्ध या तैनात करने के लिए सुरक्षित है।


धन्यवाद! मुझे ग्रंट का उपयोग करके एक समाधान मिला, जिसे मैं पहले से ही अपनी परियोजना में स्थापित करने की योजना बना रहा था। देखिए मेरा खुद का जवाब।
सिल्वेन

जेएस के लिए मूल रूप से सभी परीक्षण धावक एक ब्राउज़र पर भरोसा करते हैं? वह बेकार है।

4
मोचा और जैस्मीन एक ब्राउज़र पर भरोसा नहीं करते हैं, और जब आप ओना हेडलेस ब्राउज़र चलाना चाहते हैं, तो फैंटमज का उपयोग करने पर विचार करें।
दान कोन

2
ध्यान दें कि परीक्षण के लिए एक ब्राउज़र पर निर्भर होना कुछ बुरा नहीं है। विभिन्न प्रकार के परीक्षण हैं और परीक्षण से अंत तक परीक्षण आपकी आवश्यकताओं पर निर्भर करते हुए मान्य है। यहां तक ​​कि दृश्य प्रतिगमन का परीक्षण (देखें फेसबुक की हक्सले) कुछ मामलों में महत्वपूर्ण है।
सिरो कोस्टा

15

ऐसा लगता है कि यह नहीं किया जा सकता (धन्यवाद @dankohn)। यहाँ ग्रंट का उपयोग करके मेरा समाधान है:

  • कर्म: अपने कर्म को अपडेट करें ।conf.js फ़ाइल

    • सेट autoWatch = false;
    • सेट singleRun = true;
    • सेट browsers = ['PhantomJS'];(इनलाइन परिणाम के लिए)
  • असंतोष का शब्द:

    • npm install grunt-contrib-watch grunt-simple-mocha grunt-karma
    • दो ग्रन्ट कार्यों को कॉन्फ़िगर करें (नीचे दी गई ग्रन्ट फ़ाइल देखें)

Gruntfile.js:

module.exports = function (grunt) {
  grunt.loadNpmTasks('grunt-simple-mocha');
  grunt.loadNpmTasks('grunt-karma');

  grunt.initConfig({
    simplemocha: {
      backend: {
        src: 'test/server-tests.js'
      }
    },
    karma: {
      unit: {
        configFile: 'karma.conf.js'
      }
    }
  });

  // Default task.
  grunt.registerTask('default', ['simplemocha', 'karma']);
};
  • ग्रंट (वैकल्पिक): परीक्षण की जाने वाली विशिष्ट फ़ाइलों या फ़ाइलों को बदलने के बाद चलाने के लिए ग्रन्ट-वॉच कॉन्फ़िगर करें।

  • सभी gruntकमांड का उपयोग कर चलाएं ।


3
तो आपको अभी भी एक ब्राउज़र की आवश्यकता है, यह सिर्फ इतना है कि ब्राउज़र एक हेडलेस है। कितना बेकार, निश्चित रूप से सर्वर साइड परीक्षण के लिए कर्म का उपयोग नहीं कर रहा है।

5
नमस्ते, यह बैकएंड के लिए कर्म का उपयोग नहीं कर रहा है, यह मोचा का उपयोग कर रहा है, इसलिए कोई ब्राउज़र नहीं। किसी फ़ाइल को सहेजते ही यह आपके सभी परीक्षणों को चलाने का एक सुविधाजनक तरीका है।
सिल्वेन

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

दिलचस्प दृष्टिकोण। लेकिन आप यह कैसे सुनिश्चित करते हैं कि आपके परीक्षण में सेलेब ग्लोबल्स को ठीक से पहचाना जाए?
dmvianna
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.