单元测试 Hive 抽象层

Pri*_*s0n 4 unit-testing dart flutter flutter-hive

因此,我创建了一个更简单的抽象级别,以便在我的 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();
  }
  
}
Run Code Online (Sandbox Code Playgroud)

Abd*_*tem 5

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

您可以这样使用它:

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

main() {
  initHive();
//The rest of your test code.
}
Run Code Online (Sandbox Code Playgroud)