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();
  });
}