Я пытаюсь получить мои тесты единиц, работающие в Grunt, когда я выполняю свой индексный файл в браузере, тесты проходят успешно, однако, когда я запускаю тесты с grunt qunit
, он не может распознать какие-либо тесты ,Тестирование модулей с помощью QUnit, Grunt и RequireJS
II уверен, что это вниз к тому, как я исполняющим тесты, если, например, я просто включить:
<script>
test('Always Fail', function() {
equal(5, 2, 'The return should be 2.');
});
</script>
В голове моей тестовой страницы index.html, а затем запустить Grunt я могу см. этот тест. Однако я пытаюсь загрузить мои тесты с помощью requireJS, которые, как я сказал, работают в браузере.
Мой файл index.html выглядит следующим образом:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Unit Testing</title>
<link rel="stylesheet" href="qunit/qunit.css">
<script data-main="../unittests" src="../lib/require.js"></script>
<script src="qunit/qunit.js"></script>
<script>
test('Always Fail', function() {
equal(5, 2, 'The return should be 2.');
});
</script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
</body>
</html>
Я предполагаю, что эта строка:
<script data-main="../unittests" src="../lib/require.js"></script>
Это вызывает проблемы и не загружается с ворчанием.
Мой unittests.js файл выглядит следующим образом:
require.config({
paths: {
'QUnit': 'test/qunit/qunit'
},
shim: {
'QUnit': {
exports: 'QUnit',
init: function() {
QUnit.config.autoload = false;
QUnit.config.autostart = false;
}
}
}
});
// require the unit tests.
require(
['QUnit', 'test/dummyTest'],
function(QUnit, dummyTest) {
// run the tests.
dummyTest.run();
// start QUnit.
QUnit.load();
QUnit.start();
}
);
Вот мой gruntfile:
module.exports = function(grunt) {
// use grunt
var nocompress, optimize;
nocompress = grunt.option('nocompress') || false;
if(nocompress) {
optimize = 'none';
} else {
optimize = 'uglify';
}
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
requirejs: {
compile: {
options: {
appDir: "dev/",
baseUrl: "js",
mainConfigFile: "dev/js/bootstrap.js",
dir: "www",
optimize: optimize,
modules: [
{
name: "app"
}
]
}
}
},
qunit: {
all: ['dev/js/test/**/*.html']
},
jshint: {
options: {
curly: true,
eqeqeq: true,
eqnull: true,
browser: true,
globals: {
jQuery: true
},
},
uses_defaults: [
'dev/js/collections/*.js',
'dev/js/models/*.js',
'dev/js/views/*.js',
'dev/js/*.js', ]
}
});
// Load plugins
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-requirejs');
// Default task(s).
grunt.registerTask('build-and-qunit', ['default', 'qunit']);
grunt.registerTask('default', ['jshint', 'requirejs']);
};
Вы должны включить в вопрос соответствующие части вашего файла Gruntfile или, что еще лучше, целый файл Grunt, который содержит достаточно, чтобы воспроизвести проблему, которую вы получаете. – Louis