Firebase заглушка транзакции - PullRequest
       39

Firebase заглушка транзакции

0 голосов
/ 02 октября 2019

Я пытаюсь заглушить транзакцию по таблице базы данных в реальном времени. Транзакция находится внутри функции, вызываемой триггером (не HTTP). Я могу запустить триггер, но я не могу заблокировать транзакцию следующим образом:

var codeRef = admin.database().ref('last_code')
return codeRef.transaction(function (currentCode) {
    return currentCode + 1
})
    .then(result => {
        const {error, committed, snapshot} = result
        return snapshot.val()
    })

Я использую заглушку Sinon с mocha Модульное тестирование облачных функций . Вот как я пытался:

const test = require('firebase-functions-test')();
adminInitStub = sinon.stub(admin, 'initializeApp');
// Now we can require index.js and save the exports inside a namespace called myFunctions.
myFunctions = require('../index');
const refParam = 'last_code';
const databaseStub = sinon.stub();
const refStub = sinon.stub();
const transactionStub = sinon.stub();
Object.defineProperty(admin, 'database', { get: () => databaseStub });
databaseStub.returns({ ref: refStub });
refStub.withArgs(refParam).returns({transaction: function(code) => ({committed: true, snapshot: 999});

Но транзакция-заглушка не удалась. Я уверен, что последняя строка неверна, но не вижу решения.

...