Test de la réponse à un WS

Hello tout le monde,

Je suis en train de coder mes tests unitaires sur une application fonctionnelle.

Lorsque je lance l’application avec le jeu de test de production, les données sont bien traitées et j’arrive à visualiser mes données sur ma vue.

Mais lorsque j’essaie de passer mon test unitaire sur le traitement de la réponse de mon WS, j’ai une erreur qui survient alors que le jeu de test est le même …

Est-ce que quelqu’un y voit une explication ?

Voici mon bout de code :

test('DiscoverResponse', () {
    final api = FungusApiManager();
    const body =
        """{"data":[{"id":2,"scientific_name":"Amanita muscaria","common_name":"Amanite tue-mouches","edibility":6,"main_poster_path":"45685105-f4c5-4d04-bf21-d9a466e88692","advice":"C’est la cuticule de l’amanite tue-mouches"}]}""";

    final fungusList = api.discoverResponse(response: Response(body, 200));

Invalid argument (string): Contains invalid characters.: "{\"data\":[{\"id\":2,\"scientific_name\":\"Amanita muscaria\",\"common_name\":\"Amanite tue-mouches\",\"edibility\":6,\"main_poster_path\":\"45685105-f4c5-4d04-bf21-d9a466e88692\",\"advice\":\"C’est la cuticule de l’amanite tue-mouches\"}]}"
dart:convert                                       Latin1Codec.encode
package:http/src/response.dart 37:49               new Response
test/Managers/fungus_api_manager_test.dart 110:55  main.<fn>

Bon, en fait, je viens de trouver en rédigeant le post …

Le codec n’est pas en utf8 mais en Latin1Codec.

Voici le bout de code qui fonctionne :

final fungusList = api.discoverResponse(
        response: Response(body, 200, headers: {
      HttpHeaders.contentTypeHeader: 'application/json; charset=utf-8'
    }));
1 « J'aime »

En règle générale, si tu envoies du contenu JSON dans le body d’une requête il vaut mieux toujours prévenir le serveur avec l’entête

"Content-Type" : "application/json; charset=utf-8"

Certains serveurs l’exigent, c’est le cas de Directus d’ailleurs

1 « J'aime »