Ich versuche automatische Tests mit Karma zu konfigurieren. Meine Dateistruktur ist wie folgtKarma und RequireJS Dateien außerhalb der Basis-URL
/assests
/css
/font
/img
/js
/collection
/lib
/model
/plugin
/spec
/view
test-main.js
main.js
/templates
index.html
karma.conf.js
karma.conf.js:
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine', 'requirejs'],
// list of files/patterns to load in the browser
files: [
'js/test-main.js',
{pattern: 'js/*.js', included: false},
{pattern: 'js/collection/*.js', included: false},
{pattern: 'js/lib/**/*.js', included: false},
{pattern: 'js/lib/**/**/*.js', included: false},
{pattern: 'js/lib/**/**/**/*.js', included: false},
{pattern: 'js/model/*.js', included: false},
{pattern: 'js/model/**/*.js', included: false},
{pattern: 'js/plugin/*.js', included: false},
{pattern: 'js/plugin/**/*.js', included: false},
{pattern: 'js/spec/*.js', included: false},
{pattern: 'js/spec/**/*.js', included: false},
{pattern: 'js/view/**/*.js', included: false},
{pattern: 'js/view/*.js', included: false}
],
// list of files to exclude
exclude: [
'js/main.js',
'js/initScript.js',
'js/SpecRunner.js'
],
etc. . .
}
Test-main.js:
var allTestFiles = [];
var TEST_REGEXP = /spec/i;
var pathToModule = function(path) {
return path.replace(/^\/base\//, '').replace(/\.js$/, '');
};
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({
// Karma serves files under /base, which is the basePath from your config file
baseUrl: '../',
// dynamically load all test files
deps: allTestFiles,
// we have to kickoff jasmine, as it is asynchronous
callback: window.__karma__.start,
paths: {
'jquery' : 'lib/jqm/jquery-1.11.2.min',
'underscore' : 'lib/underscore/underscore',
'backbone' : 'lib/backbone/backbone',
'template' : '../template',
},
shim : {
backbone : {
deps : [ 'underscore', 'jquery' ],
exports : 'Backbone'
}
}
});
alle js Dateien Laden funktioniert gut. Das aktuelle Problem ist, dass ich keine Ressourcen außerhalb des Basispfads laden kann.
Also, wenn meine Tests versuchen, eine Vorlage zu holen (die unter '../template/) ist, kann Karma diese Vorlagen nicht finden und schlägt fehl.
Ich kann meinen Basispfad nicht ändern, da sich alle JS-Module unter 'js /' befinden.
Gibt es trotzdem Ressourcen außerhalb des Basispfads zu laden?