运行 karma + jasmine 测试时出现下划线错误
Underscore error when running karma + jasmine test
我是前端代码测试的新手。 运行ning karma + jasmine 测试我的 js MarionetteJs 应用程序时出现奇怪的错误。我认为这可能是因为在定义 Marionette 视图时尚未加载下划线模板。
我的karma.conf.js:
'use strict';
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['browserify', 'jasmine-ajax', 'jasmine-jquery', 'jasmine'],
exclude: ["*.jst"],
logLevel: 'LOG_DEBUG',
reporters: ['progress'],
preprocessors: {
'tests/unit/**/test_*.js': ['browserify']
},
colors: true,
browsers: ['PhantomJS'],
singleRun: true,
autoWatch: false,
plugins: [
'karma-coverage',
'karma-browserify',
'karma-jasmine-ajax',
'karma-jasmine-jquery',
'karma-jasmine',
'karma-junit-reporter',
'karma-phantomjs-launcher'
],
browserify: {
debug: true,
transform: [
'browserify-jst',
'browserify-shim',
'browserify-istanbul'
]
},
files: [
'http://code.jquery.com/jquery-1.11.2.min.js',
'tests/unit/**/test_*.js'
]
});
};
这只是我正在尝试的虚拟测试 运行:
'use strict';
var CompanyListView = require('../../company_list.js');
$(function () {
describe("A page", function () {
it("contains login form", function () {
expect(true).toBe(true);
});
});
});
请求 company_list.js
文件时发生错误:
PhantomJS 1.9.8 (Linux 0.0.0) ERROR
TypeError: 'undefined' is not a function (evaluating 'text.replace')
at /tmp/082eb28c15575edda85ae0f9ce2019a6.browserify:17883:0 <- node_modules/underscore/underscore.js:1431:0
company_list.js:
var $ = require('jquery');
var _ = require('underscore');
var Backbone = require('backbone');
var Marionette = require('backbone.marionette');
var tplCompany = require('../templates/company_list.jst');
module.exports = Marionette.CompositeView.extend({
template: _.template(tplCompany, {variable: 'data'}),
});
我做错了什么?
感谢您的帮助。
解决方案在 karma.conf.js:
transform: [
'browserify-jst',
'browserify-shim',
'browserify-istanbul'
]
必须是:
transform: [
['stringify', {extensions: ['.html', '.jst'], minify: false}],
'browserify-shim',
'browserify-istanbul'
]
我是前端代码测试的新手。 运行ning karma + jasmine 测试我的 js MarionetteJs 应用程序时出现奇怪的错误。我认为这可能是因为在定义 Marionette 视图时尚未加载下划线模板。
我的karma.conf.js:
'use strict';
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['browserify', 'jasmine-ajax', 'jasmine-jquery', 'jasmine'],
exclude: ["*.jst"],
logLevel: 'LOG_DEBUG',
reporters: ['progress'],
preprocessors: {
'tests/unit/**/test_*.js': ['browserify']
},
colors: true,
browsers: ['PhantomJS'],
singleRun: true,
autoWatch: false,
plugins: [
'karma-coverage',
'karma-browserify',
'karma-jasmine-ajax',
'karma-jasmine-jquery',
'karma-jasmine',
'karma-junit-reporter',
'karma-phantomjs-launcher'
],
browserify: {
debug: true,
transform: [
'browserify-jst',
'browserify-shim',
'browserify-istanbul'
]
},
files: [
'http://code.jquery.com/jquery-1.11.2.min.js',
'tests/unit/**/test_*.js'
]
});
};
这只是我正在尝试的虚拟测试 运行:
'use strict';
var CompanyListView = require('../../company_list.js');
$(function () {
describe("A page", function () {
it("contains login form", function () {
expect(true).toBe(true);
});
});
});
请求 company_list.js
文件时发生错误:
PhantomJS 1.9.8 (Linux 0.0.0) ERROR
TypeError: 'undefined' is not a function (evaluating 'text.replace')
at /tmp/082eb28c15575edda85ae0f9ce2019a6.browserify:17883:0 <- node_modules/underscore/underscore.js:1431:0
company_list.js:
var $ = require('jquery');
var _ = require('underscore');
var Backbone = require('backbone');
var Marionette = require('backbone.marionette');
var tplCompany = require('../templates/company_list.jst');
module.exports = Marionette.CompositeView.extend({
template: _.template(tplCompany, {variable: 'data'}),
});
我做错了什么?
感谢您的帮助。
解决方案在 karma.conf.js:
transform: [
'browserify-jst',
'browserify-shim',
'browserify-istanbul'
]
必须是:
transform: [
['stringify', {extensions: ['.html', '.jst'], minify: false}],
'browserify-shim',
'browserify-istanbul'
]