2015-06-05 6 views
14

मेरे पास एक अपाचे कॉर्डोवा प्रोजेक्ट सेटअप है और मैं पहली बार कर्म का उपयोग करने की कोशिश कर रहा हूं। मैं इस तरह परियोजना शुरू कर दिया है:कॉर्डोवा प्रोजेक्ट पर कर्मा चलाते समय 0 त्रुटि का 0 0 निष्पादित

karma start test/karma.conf.js --verbose 

लेकिन सभी मैं हो रही है:

INFO [karma]: Karma v0.12.36 server started at http://localhost:9876/ 
INFO [launcher]: Starting browser Chrome 
WARN [web-server]: 404: /favicon.ico 
INFO [Chrome 43.0.2357 (Windows 8.1 0.0.0)]: Connected on socket 0_IDnS6qvPg4OhGd7oq4 with id 66015767 
Chrome 43.0.2357 (Windows 8.1 0.0.0): Executed 0 of 0 ERROR (0.002 secs/0 secs) 

मैं डबल जाँच लिया है कि मैं क्या the docs for configuring requirejs for karma के खिलाफ किया है।

karma.conf.js

module.exports = function(config) { 
    config.set({ 
    basePath: '..', 
    frameworks: ['jasmine', 'requirejs'], 
    files: [ 
     {pattern: 'www/lib/ionic/js/*.min.js', included: false}, 
     {pattern: 'www/lib/ionic/js/angular/*.min.js', included: false}, 
     {pattern: 'www/lib/ionic/js/angular-ui/*.min.js', included: false}, 
     {pattern: 'www/js/**/*.js', included: false}, 
     {pattern: 'test/specs/*Spec.js', included: false}, 
     {pattern: 'test/test-app.js', included: true} 
    ], 
    exclude: [ 
     'www/js/app.js' 
    ], 
    preprocessors: { 
    }, 
    reporters: ['progress'], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    autoWatch: true, 
    browsers: ['Chrome'], 
    singleRun: false 
    }); 
}; 

परीक्षण app.js

var tests = []; 
for(var file in window.__karma__.files) { 
    if(window.__karma__.files.hasOwnProperty(file)) { 
     if(/Spec\.js$/.test(file)) { 
      tests.push(file); 
     } 
    } 
} 

requirejs.config({ 
    baseUrl: 'www', 
    paths: { 
     'angular': 'lib/ionic/js/angular' 
     ,'angular-ui': 'lib/ionic/js/angular-ui' 
    }, 
    shim: { 
     'angular': {exports: 'angular'}, 
     'www/js/controllers': { deps: ['angular']} 
    }, 
    deps: tests, 
    callback: window.__karma__.start 
}) 

helloSpec.js

define('helloTests', ['angular'], function() { 
     describe('UnitTest: Hello', function() { 
      it('is defined', function() { 
       expect([1,2,3].length).toEqual(3); 
      }); 
     }); 
    }); 

और यहाँ वें है ई debug.html जिसके परिणामस्वरूप:

<!doctype html> 
<html> 
<head> 
    <title>Karma DEBUG RUNNER</title> 
    <link href="favicon.ico" rel="icon" type="image/x-icon" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
    <script type="text/javascript"> 
    window.__karma__ = { 
     info: function(info) { 
     if (info.dump && window.console) window.console.log(info.dump); 
     }, 
     complete: function() { 
     if (window.console) window.console.log('Skipped ' + this.skipped + ' tests'); 
     }, 
     store: function() {}, 
     skipped: 0, 
     result: window.console ? function(result) { 
     if (result.skipped) { 
      this.skipped++; 
      return; 
     } 
     var msg = result.success ? 'SUCCESS ' : 'FAILED '; 
     window.console.log(msg + result.suite.join(' ') + ' ' + result.description); 

     for (var i = 0; i < result.log.length; i++) { 
      window.console.error(result.log[i]); 
     } 
     } : function() {}, 
     loaded: function() { 
     this.start(); 
     } 
    }; 

    window.__karma__.config = {"args":[],"useIframe":true,"captureConsole":true}; 


    // All served files with the latest timestamps 
    window.__karma__.files = { 
    '/absolutec:/Users/Mark/AppData/Roaming/npm/node_modules/requirejs/require.js': 'f9d7ac1ba78c53a51fd346e3901a5f406f060f44', 
    '/absolutec:/Users/Mark/AppData/Roaming/npm/node_modules/karma-requirejs/lib/adapter.js': 'f2d8d5976c2bbe89ebe046ac51f393f5547bbc3b', 
    '/absolutec:/Users/Mark/AppData/Roaming/npm/node_modules/jasmine-core/lib/jasmine-core/jasmine.js': '578a1e5ff14db21b04e2d6db7fd0eda37042440c', 
    '/absolutec:/Users/Mark/AppData/Roaming/npm/node_modules/karma-jasmine/lib/boot.js': '997181251903c5bcc9659d92edc872a2a4abfa7b', 
    '/absolutec:/Users/Mark/AppData/Roaming/npm/node_modules/karma-jasmine/lib/adapter.js': '0a69ad1fa10cc8be0a12b241227d3b834f82db4f', 
    '/base/www/lib/ionic/js/ionic-angular.min.js': '44040e6eeb17077cc79b0985118b15bf1420217d', 
    '/base/www/lib/ionic/js/ionic.bundle.min.js': '4a4bfece5434ae5c4cebab055aaae274f82050d9', 
    '/base/www/lib/ionic/js/ionic.min.js': '3e42a6e6700ba9982583b6b5da48861d202d8cfe', 
    '/base/www/lib/ionic/js/angular/angular-animate.min.js': '6df7f913a45a779638fd60cce18eee17268460d2', 
    '/base/www/lib/ionic/js/angular/angular-resource.min.js': 'eca9d7e3b12d62b9da13216f1d3b39fcd411f860', 
    '/base/www/lib/ionic/js/angular/angular-sanitize.min.js': 'b8cf1b04b40df803c16edda80c431ec422b63ad8', 
    '/base/www/lib/ionic/js/angular/angular.min.js': '09028d3553206017f5ced7249be5641baaea2020', 
    '/base/www/lib/ionic/js/angular-ui/angular-ui-router.min.js': '0973f9c46d3be867276e941e2e6af9c662a92333', 
    '/base/www/js/controllers/game.js': '4b67bf783d76ae9f67ac5d569e78319be4a85321', 
    '/base/www/js/controllers/setup.js': 'b466bd52a326d35700517383a6ceb5b25b3ab44c', 
    '/base/www/js/directives.js': 'fbc832e4aa0c55a597a57cd4474aa9435bc17bf1', 
    '/base/www/js/services.js': 'df5339fa9aa37d92974fe59c392b8fb53a71497d', 
    '/base/test/specs/helloSpec.js': 'b8f2b498922be08d7ff36bafd094132b9c75d357', 
    '/base/test/test-app.js': '432128c0bcd0257679fb9f4f31ff75a1060f64db' 
}; 

    </script> 
    <!-- Dynamically replaced with <script> tags --> 
    <script type="text/javascript" src="/absolutec:/Users/Mark/AppData/Roaming/npm/node_modules/requirejs/require.js"></script> 
<script type="text/javascript" src="/absolutec:/Users/Mark/AppData/Roaming/npm/node_modules/karma-requirejs/lib/adapter.js"></script> 
<script type="text/javascript" src="/absolutec:/Users/Mark/AppData/Roaming/npm/node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script> 
<script type="text/javascript" src="/absolutec:/Users/Mark/AppData/Roaming/npm/node_modules/karma-jasmine/lib/boot.js"></script> 
<script type="text/javascript" src="/absolutec:/Users/Mark/AppData/Roaming/npm/node_modules/karma-jasmine/lib/adapter.js"></script> 
<script type="text/javascript" src="/base/test/test-app.js"></script> 
    <script type="text/javascript"> 
    window.__karma__.loaded(); 
    </script> 
</body> 
</html> 

मैं यह सोचते हैं रहा है कि सेवा की दस्तावेजों की सूची सब कुछ requirejs और स्क्रिप्ट टैग से में खींच लिया है क्या कर्म द्वारा जोड़ दिया जाता है कर रहे हैं।

कंसोल आउटपुट है:

Skipped 0 tests 

तो ऐसा लगता है कि यह सिर्फ परीक्षण परिभाषाओं न दिखाई दें। लेकिन जब मैं डिबग के माध्यम से कदम और requirejs.config पर एक ब्रेकपाइंट सेट मैं देख सकता हूँ कि "परीक्षण" सरणी अपने परीक्षण फ़ाइल है:

/base/test/specs/helloSpec.js 

मैं भी देख सकते हैं यह क्रोम नेटवर्क पैनल को देखकर लोड किया गया है । कौन सा सूचीबद्ध करता है:

debug.html 
boot.js 
jasmine.js 
adapter.js 
require.js 
test-app.js 
adapter.js 
helloSpec.js 

उत्तर

21

इससे पहले मैं त्रुटि हो रही किया गया था:

define('helloTests', ['angular'], function(angular) { 
    .... 
}); 

को

define(['angular'], function(angular) { 
    .... 
}); 

से

Mismatched anonymous define() module: ... 

तो मैं परिभाषित समारोह कॉल बदल गया था कि त्रुटि विवरण से छुटकारा पा लिया, लेकिन नहीं किया कुछ भी ठीक करें। यह पता चला कि यह भी मदद नहीं कर रहा था क्योंकि अब मैं त्रुटि संदेश परिवर्तन नहीं देख सकता था। पोस्ट करने के बाद मैंने इसे एक सनकी पर हटाने की कोशिश की क्योंकि मैं इसे कहीं और इस्तेमाल नहीं कर सका। तो त्रुटि संदेश के लिए बदल दिया:

Chrome 43.0.2357 (Windows 8.1 0.0.0) ERROR: 'There is no timestamp for www/lib/ionic/js/angular.js!' 

WARN [web-server]: 404: /www/lib/ionic/js/angular.js 
Chrome 43.0.2357 (Windows 8.1 0.0.0) ERROR 
    Uncaught Error: Script error for: angular 
    http://requirejs.org/docs/errors.html#scripterror 
    at c:/Users/Mark/AppData/Roaming/npm/node_modules/requirejs/require.js:141 

जब से मैं मिनट फ़ाइलों का उपयोग किया गया था (आसान फ़ाइल पैटर्न में "* .min.js" शामिल करके डिबग संस्करणों को फिल्टर करने की) मैं अपने requirejs.config पथ बदल और जोड़ा "।मिनट "इस तरह:

requirejs.config({ 
    baseUrl: 'www', 
    paths: { 
     'angular': 'lib/ionic/js/angular/angular.min' 
     ,'angular-ui': 'lib/ionic/js/angular-ui/angular-ui.min' 
    }, 
    ... 
}) 

इस बिंदु पर त्रुटि संदेश केवल कहने के लिए angular.min.js के लिए कोई टाइमस्टैम्प था बदल इस बिंदु पर मैंने देखा पथ रिश्तेदार था और साथ शुरू कर दिया।" आधार/wwww " ।। इसी के साथ मैंने अंत में कुछ मैं याद किया था in the docs देखा है तो मैं "आधार /" जोड़ने के लिए मेरी requirejs.config में "baseurl" पैरामीटर बदल दिया है:

requirejs.config({ 
    baseUrl: 'base/www', 
    ... 
}) 

अब त्रुटि चला गया है और परीक्षण चल रहा है :

Chrome 43.0.2357 (Windows 8.1 0.0.0): Executed 1 of 1 SUCCESS (0.015 secs/0 secs) 

संपादित करें: एक और बात, परीक्षण चलना शुरू हुआ लेकिन मुझे नहीं पता था कि मुझे अभी भी "कोई टाइमस्टैम्प नहीं है" संदेश प्राप्त हो रहा था। मेरे requjs.config baseUrl पैरामीटर को पूर्ण से संबंधित (जोड़ा गया "/" शुरुआत में) बदलकर इसे ठीक किया गया।

requirejs.config({ 
    baseUrl: '/base/www', 
    ... 
}) 

अब मैं ऊपर और चल रहा हूं।

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