2015-07-20 2 views
2

Я пишу свой проект с помощью ES6 и я использую Bubel + browserify скомпилировать мои JS файлы, до сих пор все работает отлично,Тестирования с мокко и browserify

В моем файле глотка я добавил наборы тестов с использованием мокко, как так:

gulp.task('buildTestsIndividually', function(done) { 
    gutil.log('buildTestsIndividually started'); 
    glob('./test/**/*.spec.js', function(err, files) { 
     gutil.log('files'+files.length); 
     if(err) done(err); 

     var tasks = files.map(function(entry) { 
      return browserify({ entries: [entry] }) 
       .transform(babelify) 
       .bundle() 
       .pipe(source(entry)) 
       .pipe(rename({ 
        extname: '.bundle.js' 
       })) 
       .pipe(gulp.dest(bundledTestsFolder)); 
      }); 
     es.merge(tasks).on('end', done); 
    }); 
    gutil.log('buildTestsIndividually completed'); 
}); 

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

Я получаю эту ошибку:

TypeError: this.$el.editable is not a function 
      at Array.map (native) 

Пожалуйста, обратите внимание, что моя продукция окр является копипаст, как выше и плагин работает там без проблем.

Любая помощь будет очень признательна!

+0

Вы импортируете свое приложение, внедренное в ваш spec-файл. Вы на 100% уверены, что ваш spec-файл правильно имеет «froala» где-то в своих зависимостях? Не связаны, но почему вы строите пакет по спецификации? – loganfsmyth

+0

@loganfsmyth Спасибо, я нашел проблему и предложил некоторые решения для нее, см. Мой ответ ниже –

+0

Но зачем вам нужно связывать каждый тест отдельно? Обычно вы делаете единый пакет со всем, что в нем есть. – loganfsmyth

ответ

0

Итак, я нашел проблему: , так как задача gulp запускает каждый файл отдельно (со всеми его зависимостями), но все тестеры работают в одном экземпляре браузера, побочным эффектом было то, что jQuery загружался несколько раз и каждый раз, когда он переопределял предыдущий экземпляр jQuery, и поэтому плагины на некоторых тестах были переопределены.

Решение (3 варианта):

  1. убедитесь, что каждый тест имеет точно такие же модули, простирающиеся JQuery
  2. Соберите все зависимости первого (с глотком), а затем запустить все тесты (может быть более убить)
  3. выполнения каждого теста по отдельности (нужно найти способ сделать это автоматически с глотком)

Я надеюсь, что это помогает любому, ура!