Обещание решить блокирует отправку данных - PullRequest
0 голосов
/ 12 января 2020

В моем тесте Mocha JS мои данные Firebase не отправляются, когда у меня есть код завершения Promise, но они будут выводить sh, когда код отсутствует (но тест не прекратится). Как это исправить?

Примечание : вывод такой же, за исключением зависания при отсутствии кода разрешения Promise.

Вывод:

OK Attempting to inject new event with id eidMAEfy
Attempting to set /db/events/eidMAEfy to {
... JSON DATA ...
}
* HANGS HERE IF RESOLVE NOT PRESENT*

Тест. js:

describe('*NEW* Create New Event Test Suite', async function() {                                                                                                                                      

  this.timeout(0);
  let new_event_req_body = unformalized_new_test_event();
  let is_preexisting = false;

      it('creates a new event', async function() {
        return new Promise(async function (resolve, reject) {

            try {

               let res = await utils.create_new_event(new_event_req_body, is_preexisting); // ISSUE. Remove line & it posts the data (but never terminates test)
               assert.isOk('Ok','Ok');
               resolve('ok');

            } catch (e) {
               assert.fail(e);
               reject('noo');
            }
        })
      });
});

Утилиты. js

var create_new_event = async (req_body, is_preexisting) => {
    return new Promise( async function(resolve, reject) {
        // make json
        let new_event_json = new_event_result(req_body);
        if (!new_event_json) reject("Invalid Input");
        let event_id = new_event_json.id;
        ok_log("Attempting to inject new event with id " + event_id);


        let dbstring = '/db/events/'+event_id;
        log('Attempting to set ' + dbstring + ' to ' + prettify(new_event_json));
        // post data
        let re = root.ref(dbstring);
        re.set(new_event_json);

        resolve(event_id);           // Always resolves
    });
}
...