【问题标题】:Trouble with testing using MockClient in Flutter在 Flutter 中使用 MockClient 进行测试时遇到问题
【发布时间】:2019-06-28 22:22:33
【问题描述】:

我正在尝试使用 MockClient 在颤振中编写一个简单的测试,但我似乎无法让它工作。

这是我要测试的代码:

getItemById(int id) async {
   final response = await client.get("$_host/item/$id.json");
   final decodedJson = json.decode(response.body);

   return Item.fromJson(decodedJson);
}

这里是测试代码:

test("Test getting item by id", () async {
   final newsApi = NewsAPI();
   newsApi.client = MockClient((request) async {
      final jsonMap = {'id': 123};
      Response(json.encode(jsonMap), 200);
   });

   final item = await newsApi.getItemById(123);
   print("Items:  ${item.toString()}"); //<-- dosen't print anything. 
   expect(item.id , 123);
});

当我运行测试时,它失败并显示以下消息:

 NoSuchMethodError: The getter 'bodyBytes' was called on null.
 Receiver: null
 Tried calling: bodyBytes

我猜这里的问题是当我调用 getItemById 方法时,MockClient 没有返回任何内容,但我不知道为什么。

【问题讨论】:

    标签: flutter flutter-test


    【解决方案1】:

    我也有同样的问题。您必须返回响应

    return Response(json.encode(jsonMap), 200);
    

    【讨论】:

      【解决方案2】:

      Mock 期望测试功能与您的真实功能完全相同(包括可选参数等)。如果两者都不匹配,则返回 NULL,这就是您的代码所发生的情况。仔细检查您的测试功能与原始功能的不同之处。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-14
        • 2022-07-15
        • 2018-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-01
        • 1970-01-01
        相关资源
        最近更新 更多