在 Flutter 中使用 MockClient 进行测试时遇到问题
Trouble with testing using MockClient in Flutter
我正在尝试使用 MockClient 在 flutter 中编写一个简单的测试,但我似乎无法让它工作。
这是我要测试的代码:
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 没有返回任何内容,但我不确定为什么。
Mock 期望测试函数与您的实际函数完全相同(包括可选参数等)。如果两者都不匹配 returns NULL ,这就是您的代码正在发生的事情。仔细检查您的测试函数与原始函数的不同之处。
我遇到了完全相同的问题。您必须 return 回应
return Response(json.encode(jsonMap), 200);
我正在尝试使用 MockClient 在 flutter 中编写一个简单的测试,但我似乎无法让它工作。
这是我要测试的代码:
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 没有返回任何内容,但我不确定为什么。
Mock 期望测试函数与您的实际函数完全相同(包括可选参数等)。如果两者都不匹配 returns NULL ,这就是您的代码正在发生的事情。仔细检查您的测试函数与原始函数的不同之处。
我遇到了完全相同的问题。您必须 return 回应
return Response(json.encode(jsonMap), 200);