Bonjour à tous,
Je ne comprends pas le résultat d’un test sous flutter.
Voici ma ligne de code que je teste :
request.headers.addAll({"Content-Type": "application/json"});
Et voici mon test :
expect(request?.headers, {"Content-Type": "application/json"});
Expected: {'Content-Type': 'application/json'}
Actual: {'Content-Type': 'application/json; charset=utf-8'}
Which: at location ['Content-Type'] is 'application/json; charset=utf-8' instead of 'application/json'
Si je rajoute le paramètre utf-8, le test passe au vert mais c’est quelque chose qui n’est pas dans mon code
expect(
request?.headers, {"Content-Type": "application/json; charset=utf-8"});
Est-ce que c’est mis par défaut par la fonction addAll ?
Merci d’avance pour votre aide !!
La fonction addAll est une fonction générique de la classe Map, elle n’a donc pas automatiquement corrigé ton oubli.
Par contre la classe Request peut essayer de corriger l’entête à certains moments (avant l’envoi par exemple) et d’ailleur il semble que ce soit le cas lors de la lecture de la propriété encoding:
'non-streaming Request objects.');
}
/// The default encoding to use when converting between [bodyBytes] and
/// [body].
///
/// This is only used if [encoding] hasn't been manually set and if the
/// content-type header has no encoding information.
Encoding _defaultEncoding;
/// The encoding used for the request.
///
/// This encoding is used when converting between [bodyBytes] and [body].
///
/// If the request has a `Content-Type` header and that header has a `charset`
/// parameter, that parameter's value is used as the encoding. Otherwise, if
/// [encoding] has been set manually, that encoding is used. If that hasn't
/// been set either, this defaults to [utf8].
///
/// If the `charset` parameter's value is not a known [Encoding], reading this
/// will throw a [FormatException].
Il y a même des tests auto pour vérifier que la correction se fasse bien :
request.body = 'hello, world';
expect(request.contentLength, equals(12));
});
test('is not directly mutable', () {
var request = http.Request('POST', dummyUrl);
expect(() => request.contentLength = 50, throwsUnsupportedError);
});
});
group('#encoding', () {
test('defaults to utf-8', () {
var request = http.Request('POST', dummyUrl);
expect(request.encoding.name, equals(utf8.name));
});
test('can be set', () {
var request = http.Request('POST', dummyUrl)..encoding = latin1;
expect(request.encoding.name, equals(latin1.name));
});