LongTSQLFiles
LongTSQLFiles

Reputation: 213

Unable to unit test cloud_firestore live

I'm currently trying to write a unit test that verifies a certain number of documents exist.

This is what I have so far

  test('Login with no account', () async {
    Firestore _firestore = Firestore.instance;
    final QuerySnapshot result = await _firestore
        .collection(UserFirestoreField.Collection)
        .where(UserFirestoreField.EmailAddress, isEqualTo: '[email protected]')
        .where(UserFirestoreField.Password, isEqualTo: 'wrongpassword')
        .getDocuments();
    final List<DocumentSnapshot> docs = result.documents;
    print(docs);
  });

The error I'm getting is

package:flutter/src/services/platform_channel.dart 314:7 MethodChannel.invokeMethod

MissingPluginException(No implementation found for method Query#getDocuments on channel plugins.flutter.io/cloud_firestore)

I have the android emulator running with my app started.

Every guide I've seen talks about mocking a database, I want to actually check the real database.

Any way to do this in dart/flutter?

Thanks!

Upvotes: 2

Views: 687

Answers (2)

Ben Hagen
Ben Hagen

Reputation: 645

In Flutter, unit and widget tests run on your host machine which does not have the native part of your firebase plugin. This is why you are getting this error.

You really should mock the database in tests but if you really want to test your app as close to how it is run by a user you would run an integration test on an emulator.

You can also use a dart based Firebase plugin or use the Firebase REST API.

You can find more about this here: https://flutter.dev/docs/testing

Upvotes: 3

Patrick Kelly
Patrick Kelly

Reputation: 1009

You could JsonDecode into a local map and test the map.

Upvotes: 0

Related Questions