Flutter - 无法在 testWidgets 测试中打开 Sembast 数据库
Flutter - Can't open Sembast database in testWidgets test
我目前正在使用 Sembast
数据库库,想编写一个组件测试。如果我尝试在 testWidgets
测试中打开 Sembast
数据库,它会无限期挂起:
testWidgets('database', () async {
await databaseFactoryIo.openDatabase('database');
expect(1, 1); //never reaches this line
});
但是,在 test
测试中一切正常:
test('database', () async {
await databaseFactoryIo.openDatabase('database');
expect(1, 1); //passes
});
这是为什么?
我不认为在 testWidgets 期间在写模式下不改变文件系统访问是可能的(尝试创建一个目录,它也不会工作)。
在单元测试期间你可以做的是使用不同的工厂:databaseFactoryMemory
import 'package:flutter_test/flutter_test.dart';
import 'package:sembast/sembast_memory.dart';
Future main() async {
testWidgets('database', (tester) async {
var db = await databaseFactoryMemory.openDatabase('database');
expect(db, isNotNull);
await db.close();
});
}
我目前正在使用 Sembast
数据库库,想编写一个组件测试。如果我尝试在 testWidgets
测试中打开 Sembast
数据库,它会无限期挂起:
testWidgets('database', () async {
await databaseFactoryIo.openDatabase('database');
expect(1, 1); //never reaches this line
});
但是,在 test
测试中一切正常:
test('database', () async {
await databaseFactoryIo.openDatabase('database');
expect(1, 1); //passes
});
这是为什么?
我不认为在 testWidgets 期间在写模式下不改变文件系统访问是可能的(尝试创建一个目录,它也不会工作)。
在单元测试期间你可以做的是使用不同的工厂:databaseFactoryMemory
import 'package:flutter_test/flutter_test.dart';
import 'package:sembast/sembast_memory.dart';
Future main() async {
testWidgets('database', (tester) async {
var db = await databaseFactoryMemory.openDatabase('database');
expect(db, isNotNull);
await db.close();
});
}