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)
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.
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.
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).
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);