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

Я борюсь с юнит-тестами в Метеоре. Я хочу использовать скорость, пакет с жасмином, но я, должно быть, делаю что-то не так. Похоже, что тесты не работают, потому что тест не может найти код для тестирования. Тестовый проект доступен на 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 в модуле Тест, тест работает, что нормально.

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

РЕДАКТИРОВАТЬ

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

function SandwichesService(){};

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

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

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

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

С уважением и благодарностью заранее! обкрадывать

1 ответ

Решение

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

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

Пытаться:

SandwichService = new SandwichesService()

(не используйте var)

Другие вопросы по тегам