Проблемы с тестированием с использованием MockClient во Flutter
Я пытаюсь написать простой тест с использованием 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
Я предполагаю, что проблема в том, что из MockClient ничего не возвращается, когда я вызываю метод getItemById, но я не уверен, почему.
0 ответов
У меня была точно такая же проблема. Вы должны вернуть ответ
return Response(json.encode(jsonMap), 200);
Мок ожидает, что тестовая функция будет ТОЧНОЙ, как ваша реальная функция (включая НЕОБЯЗАТЕЛЬНЫЕ параметры и т. Д.). Если оба не совпадают, возвращается NULL, и это то, что происходит с вашим кодом. Дважды проверьте, чтобы увидеть, где ваша тестовая функция отличается от оригинальной функции.