У меня есть запускаемая по HTTP облачная функция 'getCategories', которая просто извлекает некоторые документы из коллекции пожарного хранилища.
При развертывании она работает нормально, как показано в журнале пожарной базы.Когда я запускаю ту же функцию локально «онлайн» с ava, эта функция просто закрывается, ожидая сбора документации.
На самом деле, я пропускаю трассировку журнала «после», которая появляется в журнале Firebase.Даже res в модульном тесте не содержит никакого ответа JSON.
Я действительно не знаю, почему это происходит, но я хотел бы решить продолжить разработку модульных тестов, как это уже было сделано для сложных фоновых облачных функций и синхронизацииHTTP-триггерные функции.
Я пытался переключиться с узла v8 на узел v10 (который в настоящее время находится в бета-версии для firebase) безрезультатно.
Я пытался удалить любые правила безопасности базы данных как отчаянныепопытаться, зная, что доступ к базе данных осуществляется с правами администратора.Никаких результатов тоже нет.
Я удалил все другие тесты ava, чтобы не было проблем с параллелизмом.
Облачная функция:
exports.getCategories = functions.region('europe-west1').https.onRequest(async (req, res) => {
let cats;
try {
const categoriesRef = db.collection("categories").orderBy("order");
console.log('before',new Date().getTime());
const categories = await categoriesRef.get();
console.log('after',new Date().getTime());
cats = [];
categories.forEach(category => {
console.info('Got cat with id: ',category.id,', desc:',category.data().desc);
cats.push({'id':category.id, 'd':category.data().desc});
});
res.set('Access-Control-Allow-Origin', '*').status(200).send(cats);
} catch (e) {
console.log('err:', e);
res.set('Access-Control-Allow-Origin', '*').status(500).end();
}
});
Модульный тест ava:
ava('getCategories: no parameters', async t => {
const req = { query: {text: 'pippo'} };
const res = {send: sinon.stub()};
console.log('start',new Date().getTime())
await myFunctions.getCategories(req, res);
console.log('stop',new Date().getTime())
t.true(true);
});
Журнал базы данных:
7: 21: 47.862 PM getCategories Выполнение функции заняло 88 мс, завершено с кодом состояния: 304
7:21: 47.861 PM getCategories Got cat с id: 1, desc: C
7: 21: 47.861 PM getCategories Got cat с id: 3, des: B
7: 21: 47.861 PMgetCategories Got cat с id: 2, desc: A
7: 21: 47.861 PM getCategories after 1562692907860
7: 21: 47.780 PM getCategories до 1562692907780
7: 21: 47.775 PM getCategories Начало выполнения функции
и журнал модульных тестов:
ubuntu @ ubuntu: ~ / workspaces / workspace_firebase / dev-com / functions $ npm test--verbose
нпм информация о том, что он работает, если он оканчивается ок
нпм глагол кли ['/home/ubuntu/.nvm/versions/node/v10.15.3/bin / node ', npm verb cli' /home/ubuntu/.nvm/versions/node/v10.15.3/bin/npm ', npm verb cli' test ', npm verb cli' --verbose ']
информация npm с использованием npm@6.9.2
информация npm с использованием node@v10.15.3
npm verb run-script ['pretest', 'test', 'posttest']
функции жизненного цикла информации npm @ ~ pretest: functions @
функции жизненного цикла информации npm @ ~ test: functions @
functions @ test / home / ubuntu / workspaces / workspace_firebase / dev-com / functions
nyc ava
⠦ start 1562693063436
⠧ до 1562693063439
⠙ stop 1562693063726
1 тест пройден
...
выход глагола npm [0, истина]
синхронизация npm npm Завершено за 5986 мс
нпм info ok