3

所以我创建了一个更简单的抽象级别,以便在我的 Flutter 应用程序中使用 Hive。这应该是管理和访问所有蜂巢箱的中心点。由于 eggetApplicationDocumentsDirectory在测试期间不可用,我怎样才能设法测试整个文件?

import '../services/workout.dart';
import 'package:hive/hive.dart';
import 'package:path_provider/path_provider.dart' as path_rovider;

import 'workout.dart';

class HiveService {
  static final HiveService _singleton = HiveService._internal();

  static const String _workoutBox = "workoutBox";

  factory HiveService() {
    return _singleton;
  }
  HiveService._internal();

  static Future<void> init() async {
    final appDocumentDirectory =
        await path_rovider.getApplicationDocumentsDirectory();
    Hive.init(appDocumentDirectory.path);
    Hive.registerAdapter(WorkoutAdapter());
  }

  static Future openWorkouts() {
    return Hive.openBox<Workout>(_workoutBox);
  }

  static Future close() {
    return Hive.close();
  }
  
}
4

1 回答 1

3

首先,您需要main在测试文件的方法顶部初始化 Hive,然后您可以继续进行其余的测试。

你可以这样使用它:

void initHive() {
  var path = Directory.current.path;
  Hive.init(path + '/test/hive_testing_path');
}

main() {
  initHive();
//The rest of your test code.
}
于 2021-01-01T19:09:28.557 回答