Проблемы с тестированием с использованием MockClient во Flutter - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь написать простой тест с использованием 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, но я не уверен, почему.

Ответы [ 2 ]

0 голосов
/ 21 июля 2019

У меня была точно такая же проблема.Вы должны вернуть ответ

return Response(json.encode(jsonMap), 200);
0 голосов
/ 03 мая 2019

Мок ожидает, что тестовая функция будет ТОЧНОЙ, как ваша реальная функция (включая НЕОБЯЗАТЕЛЬНЫЕ параметры и т. Д.).Если оба не совпадают, возвращается NULL, и это то, что происходит с вашим кодом.Дважды проверьте, отличается ли ваша тестовая функция от исходной.

...