【发布时间】:2019-04-13 00:40:54
【问题描述】:
美好的一天,我正在尝试对以下在 Cloud Firestore 中创建文档的函数执行一些单元测试。我在我的应用程序中使用了一个函数,它创建了一个文档,但我想编写一个 test.dart 文件,该文件对以下函数执行单元测试,甚至在控制台上打印一些输出以进行验证。
我认为我没有以正确的方式编写我的 Test.dart。我收到一个错误。
createdatabase.dart 文件中的函数
Future<dynamic> createDoc(dataMap,collection) async {
final TransactionHandler createTransaction = (Transaction tx) async {
final DocumentSnapshot ds = await tx.get(db.collection(collection).document());
final Map<String, dynamic> result = {};
result.addAll(dataMap);
result['id'] = ds.documentID;
await tx.set(ds.reference, result);
return result;
};
Test.dart
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:test/test.dart';
import '../lib/service/createfirebase.dart';
void main() {
CreateFirebase cf = new CreateFirebase();
//test
test('Creating doc on firestore ', () async{
Object dataObj ={'name':'Dev','title':'Dev'};
var create = await cf.createDoc(dataObj, 'crude');
expect(true,create);
print('The doc details are');
print(dataObj);
});
}
运行此测试后的错误是 MissingPluginException(在通道 plugins.flutter.io/cloud_firestore 上找不到方法 Firestore#runTransaction 的实现)
但我不明白为什么,因为我拥有所有依赖项,并且如果我在另一个类中调用该函数,则会创建文档。但是在这个测试中调用会出现上述错误。我想我的做法不对。
我可以查看任何有助于测试此类功能的贡献或任何参考资料?
【问题讨论】:
-
据我了解,插件使用平台特定代码运行,这意味着如果它在 Android 上运行,它将运行 Java/Kotlin 代码。在内部测试中,它不会有任何平台代码可以运行。这使您可以选择在 Firestore 中使用 driver test 或 mock。
标签: dart google-cloud-firestore flutter-test