我在测试调用hive PUT方法的函数时遇到了问题,现在我将提供函数、测试和错误消息的代码

//

class AppLocalDataSourceImpl implements AppLocalDataSource {
  static const _kTag = "AppLocalDataSource";
  final Box _appBox;

  AppLocalDataSourceImpl({required Box appBox}) : _appBox = appBox;

  @override
  Future<void> updateAppCountry(CountryModel country) async {
    try {
      await _appBox.put(
        CacheKeys.ckAppCountry,
        country,
      );
    } catch (e) {
      logError("$_kTag updateAppCountry Error: $e");
      throw LocalStorageException(
        errLogMessage: localStorageErrorMessage(e.toString()),
      );
    }
  }
}

测试实施////////////////////////

class MockBox extends Mock implements Box<dynamic> {}

void main() {
  group('AppLocalDataSourceImpl Tests', () {
    late AppLocalDataSourceImpl dataSource;
    late MockBox mockBox;

    setUp(() async {
      mockBox = MockBox();
      dataSource = AppLocalDataSourceImpl(appBox: mockBox);
    });

    test('updateAppCountry calls put with correct parameters', () async {
      // Arrange
      const country = CountryModel(
        id: 1,
        icon: 'icon_url',
        name: 'Test Country',
        code: 'TC',
        currency: CurrencyModel(id: 1, currency: 'USD', name: 'US Dollar'),
      );

      when(mockBox.put(any, any)).thenAnswer((inn) async => Future.value());

      // Act
      await dataSource.updateAppCountry(country);

      // Assert
      verify(mockBox.put(CacheKeys.ckAppCountry, country)).called(1);
    });
  });
}

/

00:02 +6 -1: AppLocalDataSourceImpl Tests updateAppCountry calls put with correct parameters [E]                                                                                                         
  type 'Null' is not a subtype of type 'Future<void>'
  test/src/core/app_data/data_source/local/app_local_data_source_impl_test.dart 11:7    MockBox.put
  test/src/core/app_data/data_source/local/app_local_data_source_impl_test.dart 124:20  main.<fn>.<fn>
  

To run this test again: /Users/macbook/Dev/flutter/bin/cache/dart-sdk/bin/dart test /Users/macbook/StudioProjects/TravelApp/test/src/core/app_data/data_source/local/app_local_data_source_impl_test.dart -p vm --plain-name 'AppLocalDataSourceImpl Tests updateAppCountry calls put with correct parameters'
00:02 +6 -1: Some tests failed. 

推荐答案

when(mockBox.put(any, any)).thenAnswer((inn) async => Future.value());

在这里,而不是any放在那里any().

Flutter相关问答推荐

如何从模型列表中生成DropdownButtonFormField?

我可以在iOS设备上使用Ffltter实现Google Pay按钮吗?

如何在应用程序启动时解析和加载JSON文件?

我怎样才能判断一个字符串值是否为空(&Q;&Q;)?

查询满足AND条件的文档的FiRestore

如何在Flutter 中共享选定文本

在Ffltter中,我已经使用了Ffltter_BLOC Cupit和Pusher,但当获得新数据时,UI没有更新

上传的图像不能在FireBase中预览.S档案类型为空白,摆动

如何获取flutter中gridview项目占用的高度和宽度?

显示图像的放大部分

如何在两个不同的路由(屏幕)之间正确设置 BlocProvider?

如何使用 Rrect 或类似工具在 flutter 中绘制梯形线?

如何限制用户每 24 小时执行的操作数?

如何在 Flutter 中使用简写 IF 禁用单选按钮?

为什么容器会填满整个空间?

出现错误;运算符[]不是为对象类型定义的?功能()'

我一直在try 创建按钮以导航到第二页,但不知何故 RaisedButton 功能无法正常工作

Flutter:font_awesome_icon pro 版报错?如何设置 font_awesome 克隆仓库的路径?

我已经删除了我的 .android 密钥库,但我没有使用它,如何生成一个新的?

从 Uint8List 或图像对象创建 InputImageData 用于 Google ML Kit 人脸检测