dart 在Flutter中使用Isar运行单元测试

kokeuurv  于 2023-05-04  发布在  Flutter
关注(0)|答案(1)|浏览(212)

Isar中运行单元测试的正确方法是什么?我一直得到nullIsar.getInstance()!阻止我运行任何查询。运行测试时的语法与在应用程序中运行时的语法是否不同?文档绝对没有关于单元测试的内容。

void main() async {
  setUpAll(() async {

    // This is always null
    Isar isar = Isar.getInstance()!;
    print(isar);   // null

  });
  test('', () {
    // Empty
  }, tags: 'service');
}
ohfgkhjo

ohfgkhjo1#

我遇到了同样的问题,并在isar的GitHub问题page上找到了解决方案。

void main() {
  late Isar isar;

  final data = [.. users data];

  setUpAll(() async {
    await Isar.initializeIsarCore(download: true);
    isar = await Isar.open([IsarUserSchema]);
    await isar.writeTxn(() async {
      await isar.users.clear();
    });
  });

  tearDownAll(() async {
    await isar.close();
  });

  setUp(() async {
    await isar.writeTxn(() async {
      await isar.users.clear();
    });
  });

  // Test for example
  test('addUsers add N users to DB', () async {
    await isar.writeTxn(() => isar.users.putAll(data));
    final result = await isar.users.count();
    expect(result, data.length);
  });
}

相关问题