#javascript #requirejs #gruntjs #jasmine #phantomjs
#javascript #requirejs #gruntjs #jasmine #phantomjs
Вопрос:
Я тестирую свое базовое приложение с помощью Jasmine через Yeoman / Grunt / Phantomjs. Когда я делаю grunt jasmine
это в командной строке, я получаю сообщение об ошибке Warning: No specs executed, is there a configuration error? Use --force to continue. Aborted due to warnings.
Не отображается даже неудачный тест, которого я ожидаю.
Эта ошибка появляется только тогда, когда я использую requirejs в спецификации, но без нее тест работает (т. Е. Без define()
). Так что я предполагаю, что это как-то связано с тем, как я настроил Jasmine с помощью Requirejs и Grunt. Но я не знаю, где и как это исправить. Я погуглил, но ничего не решает.
Спецификация (по крайней мере, это должно завершиться неудачей):
define(function(require) {
var User = require('models/user');
describe('Model : User', function() {
var user;
beforeEach(function() {
user= new User;
});
it('should have a default string for name as "anon', function() {
expect(user.get('name')).toEqual('anon');
});
});
});
Настройка Jasmine с помощью Requirejs:
require.config({
shim: {
jasmine: {
exports: 'jasmine'
},
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
},
paths: {
jasmine: 'bower_components/jasmine/lib/jasmine-core/jasmine',
'jasmine-html': 'bower_components/jasmine/lib/jasmine-core/jasmine-html',
jquery: 'bower_components/jquery/dist/jquery',
backbone: 'bower_components/backbone/backbone',
underscore: 'bower_components/underscore/underscore',
text: 'bower_components/requirejs-text/text',
spec: 'spec'
}
});
require(['jquery', 'jasmine-html'], function($, jasmine) {
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter(),
specs = [];
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter = function(spec) {
return htmlReporter.specFilter(spec);
};
$(function() {
require(specs, function() {
jasmineEnv.execute();
});
});
});
Gruntfile:
jasmine: {
all:{
src : '/scripts/{,*/}*.js',
options: {
keepRunner: true,
specs : 'test/spec/*Spec.js',
vendor : [
'<%= yeoman.app %>/bower_components/jquery/dist/jquery.js',
'<%= yeoman.app %>/bower_components/underscore/underscore.js',
'<%= yeoman.app %>/bower_components/backbone/backbone.js',
'.tmp/scripts/templates.js'
]
}
}
},
requirejs: {
dist: {
// Options: https://github.com/jrburke/r.js/blob/master/build/example.build.js
options: {
baseUrl: '<%= yeoman.app %>/scripts',
optimize: 'none',
paths: {
'templates': '../../.tmp/scripts/templates',
'jquery': '../../<%= yeoman.app %>/bower_components/jquery/dist/jquery',
'underscore': '../../<%= yeoman.app %>/bower_components/underscore/underscore',
'backbone': '../../<%= yeoman.app %>/bower_components/backbone/backbone'
},
preserveLicenseComments: false,
useStrict: true,
wrap: true
}
}
},...
Пожалуйста, помогите, спасибо