javascript - test - mocha vs chai




Mocha Unit Tests für Firebase App (2)

Wenn Sie sagen: "Ich möchte die Funktion signInWithEmailAndPassword in meinem Mocha Unit Test verwenden", dann würde ich Ihnen sagen, "warum"?

Versuchen Sie, dem Firebase-Team zu helfen, indem Sie testen, ob der Authentifizierungsdienst funktioniert? Das ist nett von dir, aber wenn du deine App testen willst, solltest du in einem Komponententest gar nicht nach Firebase rufen. Was Sie wirklich überprüfen möchten, ist, dass eine Antwort, die der Antwort von Firebase ähnelt, von Ihrer Anwendung in dem Code richtig gehandhabt wird, der ausgeführt wird, sobald die Antwort zurückkommt.

Wenn ich beauftragt würde, einen Test dafür zu schreiben, würde ich die sinon-Bibliothek mit mocha verwenden und einen Stub erstellen, der eine andere Funktion aufruft, die einige Daten zurückgibt, anstatt tatsächlich Firebase aufzurufen:

Dies veranschaulicht die Syntax für einen Sinon-Stub:

var stub = sinon.stub(object, "method", func);

Das würde ich in Ihrem Beispiel tun:

var stub = sinon.stub(FIREBASE_API_REF.auth(), "signInWithEmailAndPassword"
,  () => { 

  // Simply return a JSON object that is similar to the normal response from Firebase
  return {
    name: "Jim",
    data: {
      something: "some stuff"
    }
});

Ich benutze Firebase 3.3.0 und ich möchte die Funktion signInWithEmailAndPassword in meinem Mocha- Einheitentest verwenden, aber ich erhalte die Fehlermeldung auth / network-request-failed

Unhandled rejection Error: A network error (such as timeout, interrupted connection or unreachable host) has occurred. 

test.js

const FIREBASE_CONFIG = {
    apiKey: "AIzaSyDdA1POUWy9eid1AdBYuMdxch_k8ob7Qrg",
    authDomain: "my-app.firebaseapp.com",
    databaseURL: "https://my-app.firebaseio.com",
    storageBucket: "my-app.appspot.com",
};

const FIREBASE_API_REF = firebase.initializeApp(FIREBASE_CONFIG);

before(function (done) {

        promise = new Promise(function (resolve, reject) {
            return FIREBASE_API_REF.auth().signInWithEmailAndPassword(firstUserEmail, firstUserPassword)
            .then(function (userData) {
                firstUserId = userData.uid;
                resolve(userData);
                done();
            }, function (error) {
                return reject(error);
            })
        });

    });

Paket.json

"scripts": {
    "test": "mocha --grep ./e2e.js --invert --compilers js:babel-register -R spec --ui bdd --timeout 7000"
  }

wahrscheinlich hast du es nicht mehr gebraucht, aber anstatt einen stub zu erstellen, habe ich einfach spyOn benutzt und es hat funktioniert wie ein charm.





firebase-authentication