жасмин-узел - включая помощника

Я пытаюсь протестировать свое приложение Meteor с помощью узел жасмина. Я вырезал некоторые методы фреймворка Meteor в помощнике (spec_helper.js):

  var Meteor = {
    startup: function (newStartupFunction) {
        Meteor.startup = newStartupFunction;
    },
    Collection: function (collectionName) {
        Meteor.instantiationCounts[collectionName] = Meteor.instantiationCounts[collectionName] ?
            Meteor.instantiationCounts[collectionName] + 1 : 1;
    },
    instantiationCounts: {}
  };

На этом этапе мне нужно запустить код в spec_helper.js (что-то эквивалентное включению модуля на других языках). Я пробовал следующее, но безуспешно:

require(['spec_helper'], function (helper) {
    console.log(helper); // undefined
    describe('Testing', function () {
        it('should test Meteor', function () {
            // that's what I want to call from my stubs... 
            // ...it's obviously undefined
            Meteor.startup();
        });
    });
});

Любая помощь будет принята с благодарностью.


person alexs333    schedule 19.02.2014    source источник
comment
Кстати, это также может указывать на проблему с вашей требуемой конфигурацией. Предполагаю, что вы используете переключатели --requireJsSetup и --runWithRequireJs. Возможно, вам захочется дважды проверить, что все правильно настроено.   -  person A-Dubb    schedule 27.02.2014


Ответы (1)


jasmine_node автоматически загрузит помощников (любой файл, содержащий слово _2 _ >) из вашего каталога spec.

ПРИМЕЧАНИЕ: вы можете обмануть и использовать вместо этого helper, поскольку это подстрока _4 _... имеет больше смысла, если вы разделите помощники по нескольким файлам ... единственное и множественное число.

Если вы выполняете свои спецификации из specs/unit, создайте файл с именем specs/unit/meteor-helper.js, и jasmine_node автоматически предоставит его для вас. Он загрузит файлы с расширением .js, если ваш спецификации написаны на ванильном JavaScript. Если вы передадите --coffee переключатель в командной строке, или через конфигурацию вашей задачи grunt (вы можете даже использовать gulp, если вы амбициозны), тогда он загрузит помощников с расширениями js|coffee|litcoffee.

Вы должны экспортировать hash из каждого вспомогательного файла следующим образом:

specs/unit/meteor-helper.js

// file name must contain the word helper // x-helper is the convention I roll with module.exports = { key: 'value', Meteor: {} }

Затем jasmine_node запишет каждый ключ в глобальное пространство имен.

Это позволит вам просто ввести key или Meteor из ваших спецификаций или любой тестируемой системы (обычно код внутри вашей папки lib, для которой спецификации выполняют утверждения).

Кроме того, jasmine_node также позволит вам подавить загрузку помощников с помощью переключателя --nohelpers (см. code или README для получения дополнительной информации).

Это правильный способ обработки помощников для жасмина через узел. Вы можете встретить некоторые ответы / примеры, которые ссылаются на файл jasmine.yml; или, может быть, даже spec_helper.js. Но имейте в виду, что это для рубиновой земли, а не для узла.

ОБНОВЛЕНИЕ: Похоже, jasmine-node будет источником вашего файла, только если он содержит слово helpers. Присвоение имени каждому вспомогательному файлу x-helper.js|coffee|litcofee должно помочь. т.е. meteor-helper.coffee.

person A-Dubb    schedule 26.02.2014
comment
И не забудьте установить --test-dir в папку, в которой находится помощник. - person wizztjh; 25.06.2014