Модульные тесты в метеоре не могут найти код, который им нужно протестировать

Я борюсь с модульными тестами в Meteor. Я хочу использовать пакет speed, jasmine, но я, должно быть, делаю что-то не так. Тесты не работают, потому что тест не может найти код для тестирования. Тестовый проект доступен на github.

Код, который я хочу протестировать, находится здесь: https://github.com/robvanpamel/coderepository/blob/master/meteor/sandwich-app/server/Services/SandwichService.js

Модульный тест находится здесь: https://github.com/robvanpamel/coderepository/blob/master/meteor/sandwich-app/tests/jasmine/server/integration/spec/SandwichServiceSpec.js Когда я раскомментирую созданный SandwichService в Unit Test, тест работает, это нормально.

Я не делал никаких настроек в метеоре, и я думаю, что это проблема. Вам нужно поместить файл package.js, где вы указываете свой исходный код? Как Jasmine может узнать, где найти SandwichService, который я пытаюсь протестировать? Это также ошибка, которую я получаю. «ReferenceError: SandwichesService не определен»

ИЗМЕНИТЬ

Я смог решить эту проблему и обновил репозиторий кода на GitHub. Ключ был в том, чтобы не использовать прототипы Javascript. поэтому ниже не будет работать

function SandwichesService(){};

SandwichesService.prototype.listSandwiches = function() {
  // do stuff here
}

в то время как код ниже работает

SandwichService = {
  listSandwiches: function(){
      // do stuff here
  }
};

Я не очень понимаю, почему? Кто-нибудь может сказать мне?

С уважением и заранее спасибо! Роб


person Rob Van Pamel    schedule 23.12.2015    source источник


Ответы (1)


Это проблема Метеора, а не проблема тестирования :)

Вам нужно поместить SandwichesService в глобальное пространство имен. Ваш второй блок делает это по умолчанию.

Пытаться:

SandwichService = new SandwichesService()

(не используйте переменную)

person Xolv.io    schedule 24.12.2015