You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Dio接口测试:如何验证getPoints方法调用时请求正确的端点路径

验证Dio请求端点路径的测试方案

嘿,我来帮你搞定这个测试断言的问题!要验证getPoints(id:12)是否正确调用了points/12/端点,你需要借助Mockito的参数捕获功能,检查传入fetch方法的RequestOptions对象里的路径属性。

具体实现步骤

  1. 捕获请求参数:使用captureAny捕获mockDioAdapter.fetch的第一个参数(也就是RequestOptions实例)。
  2. 断言路径正确性:从捕获到的参数中提取path属性,和你期望的端点路径做对比。

修改后的完整测试代码

test(
  "should return Points for a valid id and hit the correct endpoint",
  () async {
    // 准备模拟响应
    when(mockDioAdapter.fetch(any, any, any)).thenAnswer(
      (_) async => successfulRequestResponseJson,
    );

    // 调用待测试方法
    Points points = await pointsRemoteDataSource.getPoints(id: 12);

    // 捕获并验证请求路径
    final capturedRequest = verify(mockDioAdapter.fetch(captureAny, any, any)).captured.first as RequestOptions;
    expect(capturedRequest.path, equals("points/12/"));
    
    // 可选:额外验证请求方法是GET
    expect(capturedRequest.method, equals("GET"));
  },
);

代码说明

  • captureAny是Mockito提供的参数捕获器,用来获取传入方法的特定参数;captured.first会拿到我们捕获到的第一个参数(也就是请求的配置对象)。
  • 如果你的Dio实例配置了baseUrl,不用担心,RequestOptions.path存储的是你在dio.get()中传入的相对路径,和你代码里写的"points/$id/"完全匹配,所以这个断言是准确的。

内容的提问来源于stack exchange,提问作者Rohan Taneja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 09:38:10