के साथ अज्ञात अनाम परिभाषित()" यूनिट परीक्षण स्थापित करने और चलाने के लिए मैं थोड़ी देर के लिए अटक गया हूं।"त्रुटि: कर्म + आवश्यकता जेएस + जैस्मीन
मेरे पास एक एंगुलरजेएस फ्रंट-एंड है जो आवश्यकता के लिए अनुकूलित RequJS और r.js के साथ लोड किया गया है, इसलिए यह सभी एक अच्छी तरह से एक फ़ाइल में है। यह काम!
यूनिट परीक्षण निष्पादित करने के लिए काम नहीं करता है। यह अभी तक कुछ भी कल्पना नहीं है, बस एक ट्यूटोरियल से एक स्टार्टर की प्रतिलिपि बनाई।
tests/user/user.test.js
:
define(['angular', 'angular-mocks', 'app'], function(angular, app) {
describe('Unit: UserController', function() {
beforeEach(module('user.app'));
it('should do something', function() {
console.log('did it');
});
});
});
तो मैं एक karma.conf.js
:
module.exports = function(config) {
config.set({
logLevel: config.LOG_DEBUG,
basePath: './',
files: [
// r.js'd app files
{pattern: 'dist/app.js', included: false},
// the tests
{pattern: 'tests/**/*.test.js', included: true},
],
excluded: ['tests/main.test.js']
frameworks: ['jasmine', 'requirejs'],
browsers: ['PhantomJS'],
plugins: [
'karma-jasmine',
'karma-junit-reporter',
'karma-phantomjs-launcher',
'karma-requirejs'
],
});
};
एक main.test.js
:
var allTestFiles = [];
var TEST_REGEXP = /(spec|test)\.js$/i;
var pathToModule = function(path) {
var returnValue = path.replace(/^\/base\//, '').replace(/\.js$/, '');
return returnValue;
};
Object.keys(window.__karma__.files).forEach(function(file) {
if (TEST_REGEXP.test(file)) {
// Normalize paths to RequireJS module names.
allTestFiles.push(pathToModule(file));
}
});
require.config({
baseUrl: '/base',
paths: {
'angular-mocks': 'node_modules/angular-mocks/angular-mocks',
'app': 'dist/app',
},
deps: allTestFiles,
callback: function() {
console.log('load complete');
window.__karma__.start();
},
});
और अंत में एक gulp
कार्य:
var gulp = require('gulp');
var karma = require('karma').server;
gulp.task('unit-test', function(done) {
karma.start({
configFile: __dirname + '/karma.conf.js',
singleRun: true
}, function() { done(); });
}
यहां और वहां मैंने कुछ लॉग आउटपुट जोड़े और यह दिखाता है कि फाइलें लोड की गई हैं।
लेकिन मुझे tests/user/user.test.js
में यह अटक गया है और मुझे नहीं पता कि क्या गलत है। यहाँ आउटपुट है: http://pastebin.com/evJPj9B3
अगर मैं
define('namedtestorso', ['angular', 'angular-mocks', 'app'], function(angular, app) {
...
तरह इकाई परीक्षण मॉड्यूल का नाम ... मैं एक त्रुटि किसी भी अधिक नहीं मिलता है, लेकिन परीक्षण निष्पादित नहीं कर रहे हैं। चूंकि सभी उदाहरणों को मैं इसे याद कर सकता हूं क्योंकि इसे अनाम परिभाषित करता है, मुझे लगता है कि नामकरण सही नहीं है। लेकिन उस स्थिति में लॉग आउटपुट निष्पादित किया जाता है कि main.test.js
से कॉन्फ़िगर कॉलबैक दो बार निष्पादित किया जाता है। (क्या यह किसी चीज के लिए संकेत है?)
अगर किसी को यह पता चल जाए कि इसे कैसे ठीक किया जाए/इसे चलाने के लिए या यहां तक कि गलत क्या है, यह जानने के लिए कैसे अच्छा होगा। अग्रिम में धन्यवाद!