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