web-dev-qa-db-fra.com

Exécution de Firestore local, par ex. pour tester

Existe-t-il un moyen d'exécuter Firestore localement (par exemple à des fins testing)?

Quelle serait l'approche pour écrire des tests sur la base de données (à l'exception de l'utilisation de simulations)

22
maku_at

Il n'y en a pas actuellement, mais restez à l'écoute car c'est quelque chose que nous voulons fournir.

En attendant, nous suggérons d'utiliser un projet de test distinct pour couvrir cela. Le niveau gratuit quotidien par projet y contribue également.

17
Dan McGrath

Mise à jour de novembre 2018 : l'émulation locale, au moins dans le but de tester les règles Firestore, a été démo au Firebase Summit 2018 en utilisant - @firestore/testing et documenté sous Testez vos règles de sécurité Cloud Firestore .

Il semble que ce soit dans le sens de:

const firebase = require(`@firebase/testing`)
const app = firebase.initializeTestApp({
  projectId: 'my-project',
  auth: { uid: '123', email: '[email protected]' }
})

const attempt = app.firestore()
  .collection('colId').doc('docId').get()
firebase.assertFails(attempt)
firebase.assertSucceeds(attempt)

Cela semble tôt, car cela n'a pas été noté dans les notes de version, mais je suis sûr que cela arrive.

11
Brian M. Hunt

Vous pouvez exécuter l'émulateur Firestore en exécutant:

gcloud beta emulators firestore start

puis définissez le FIRESTORE_EMULATOR_Host variable d'environnement selon la sortie de la console (par exemple, exécuter export FIRESTORE_EMULATOR_Host=::1:8505).

Cela nécessite le Google Cloud SDK et un Java 8+ JRE installé et sur votre système PATH).

4
Oliver

pour un test firestore écrivez un exemple js test.js vous pouvez tester l'écriture avec cet exemple de format

var data = {
        value: {createTime: new Date(),
                updateTime: new Date(),
                fields:{

                        name:{stringValue:'new value data'},
                        age:{integerValue:50}
                      }
        },
        oldValue: {createTime: new Date(),  //old create time
                updateTime: new Date(),  //old update time time
                fields:{

                        name:{stringValue:'olvalue data'},
                        age:{integerValue:50}
                      }
        }
      };
testFireStoreEvent(data);

pour exécuter exécuter

firebase experimental:functions:Shell < test.js

MISE À JOUR !!!! VALABLE POUR LES ÉVÉNEMENTS D'ÉCRITURE ET DE MISE À JOUR

var data = {
    before: {  
          //your before data

    },
    after: {

        //your after data
     }
  };
testFireStoreEvent(data);
2
Rene Arias