Существует проблема при реализации модульных тестов Jasmine через Karma для проекта Asp. Net MVC с оболочкой Durandal поверх Knockout JS + Require JS. Вот пример кода:
karma.conf. js
config.set({
basePath: '',
files: [
{ pattern: '../scripts/jasmine/boot.js', included: false },
{ pattern: '../scripts/knockout-3.4.0.js', included: false },
{ pattern: '../scripts/jquery-1.9.1.js', included: false },
{ pattern: 'node_modules/**/*-min.js', included: false },
{ pattern: '../app/durandal/app.js', included:false},
'TestScripts/test-main.js',
'TestScripts/DefaultTestSpec.js',
],
frameworks: ['jasmine', 'requirejs'],
plugins: [
require('amd-loader'),
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-requirejs')
],
client: {
clearContext: false
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: true
});
};
test-main. js
var TEST_REGEXP = /(spec|test)\.js$/i;
var BASE_URL = '/base/build/js';
var BASE_URL_REGEXP = /^\/base\/build\/js\/|\.js$/g;
for (var file in window.__karma__.files) {
if (window.__karma__.files.hasOwnProperty(file)) {
if (/Spec\.js$/.test(file)) {
tests.push(file);
}
}
}
require.config({
baseUrl: '/TestScripts',
paths: {
'env': 'env',
'jquery': '../../scripts',
'underscore': '../../node_modules/underscore/',
'knockout': '../../scripts/',
'require': '../../app/durandal/amd/require',
'app':'../../app/durandal/app.js',
},
shim: {
'underscore': {
exports: '_'
}
},
deps: tests,
callback: window.__karma__.start
});
DefaultTestSpe c. js
define(['ViewModel'], function (InitVM) {
describe("MyTestSpecTest", function () {
it("should be able to connect to View Model file", function () {
expect(vm.id()).toBe(1);
});
});
});
тестирование JS viewmodel
define(function processView(require) {
function initVM(mode, data, InterfaceName) {
this.id = ko.observable(1);
var vm = this;
return vm;
})
return InitVM;
})
Если необходимо включить файл HTML модели представления в test-main или путь в karma.conf. js? На момент публикации сообщение об ошибке вопроса - Uncaught Error: несоответствующий анонимный модуль define (): функция Uncaught Ошибка: несоответствующий анонимный модуль define (): функция
Что может быть вызвано или чего-то не хватает в конфигурационных файлах?