Yeoman: тестирование с помощью jasmine и requirejs не работает

#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
        }
    }
},...
  

Пожалуйста, помогите, спасибо