Как заставить Grunt-Contrib-Jasmine выполнять спецификации и загружать зависимости?

Проект: Backbone + Require + Underscore + Grunt + Grunt-Contrib-Jasmine + Grunt-Lib-PhantomJS

Итак, я боролся с двумя серьезными проблемами. Я знаю, что phantomjs работает правильно и т. д., поскольку я получаю массу ошибок во время выполнения, если включаю файлы src своего приложения. Я даже распорядился правильно настроить deps, чтобы Backbone не рвало, если _ не был определен и т. д.

1) Когда я включаю src своего приложения, я получаю сообщение об ошибке can't find variable: define для всех моих исходных файлов. Я пытался поместить требования в src[] вместо vendor[] и даже пытался загрузить RequireJSConfig.js, в котором есть зависимости.

2) Вот проблема: я почти уверен, что правильно указываю на свои файлы спецификаций. Если я просто укажу на один тест, он все равно скажет No Specs Executed. Is there a configuration error? В моем случае я просто укажу на свой UserModelUnitTest.js, что очень просто. Он не выполняется. Я схожу с ума!

Спецификация (UserModelUnitTest.js):

describe('User Model Unit Tests', function() {
var USER_MODEL,
    USER_CLASS,
    JSON_OBJ;
  beforeEach(function() {
    USER_CLASS = testr('models/user/User', {});
  });

  afterEach(function() {
    USER_MODEL = null;
    USER_CLASS = null;
    JSON_OBJ = null;
  });    
  describe('Given a json object', function() {
    it('should create a valid User', function() {
      JSON_OBJ = {"databaseId": 123456,"loginName": "god","firstName": "Jesus","lastName": "Christ","phone": "666-666-6666","email": "[email protected]","isoCountryCode": "US","languageCode": "en","roles" : ["SALES_REP"]};
      USER_MODEL = new USER_CLASS(JSON_OBJ, { parse: true });
      expect(USER_MODEL).not.toBe(null);
    });
    // etc...
  });
})

Вот моя структура директорий

/project
 - src
     - main
     + test 
        + js
            +unit
                 UserModelUnitTest.js

Вот моя конфигурация Gruntfile/Jasmine

 jasmine: {
          test:{
              vendor:[
                  'src/main/resources/js/lib-clean/jquery-2.1.0.js',
                  'src/main/resources/js/lib-clean/require-2.1.1.full.js',
                  'src/main/resources/js/lib-clean/underscore-1.5.2.min.js',
                  'src/main/resources/js/lib-clean/backbone-1.1.2.min.js'
              ],
              src : [
                  // these all error like crazy. Can't find variable 'define' etc.
                  // 'src/main/**/*.js',                         
                  // 'src/main/**/**/*.js',
                  //'src/test/RequireJSConfig.js'
              ],
              helpers : [
                  'src/test/js/helpers/dependencyHelper.js',
                  'src/test/js/helpers/errorHelper.js',
                  'src/test/js/helpers/requesetHelper.js',
                  'src/test/lib/testr.js',

                  // jasmine.js + jasmine-html.js etc
                  'src/test/lib/*.js',

                  // stubs
                  'src/test/js/stubs/*.js'
              ],
              specs : [
                  'src/test/js/unit/UserModelUnitTest.js'
              ],
              //specs : 'src/test/js/unit-headless.html',
              timeout : 10000,
              phantomjs : {
                  'ignore-ssl-errors' : true
              }
          }
      },

Но у меня есть спецификации!!!!


person FlavorScape    schedule 11.04.2014    source источник


Ответы (2)


У меня была такая же проблема. Вам нужно определить vendor, specs, helpers в опции options.

jasmine: {
  src: 'path/to/src',
  options: {
    vendor: 'path/to/vendor',
    specs: 'path/to/specs',
    helpers: 'path/to/specs'
    // etc.
  }
}
person mrydengren    schedule 12.04.2014

иногда это происходит из-за того, что: вы не создали папку спецификации и файл спецификации, а также при создании файла спецификации вам нужно создать тест внутри, иначе он не будет запускаться.

person raduken    schedule 19.08.2015