7 votes

Mocking de la réponse MongoDB en Go

Je récupère un document depuis MongoDB et le passe à la fonction transform par exemple

var doc map[string]interface{}
err := collection.FindOne(context.TODO(), filter).Decode(&doc) 
result := transform(doc)

Je veux écrire des tests unitaires pour transform mais je ne sais pas comment simuler une réponse de MongoDB. Idéalement, je voudrais mettre en place quelque chose comme ceci :

func TestTransform(t *testing.T) {
    byt := []byte(`
    {"hello": "world",
     "message": "apple"}
 `)

    var doc map[string]interface{}

    >>> Some method here to Decode byt into doc like the code above <<<

    out := transform(doc)
    expected := ...
    if diff := deep.Equal(expected, out); diff != nil {
        t.Error(diff)
    }
}

Un moyen serait de json.Unmarshal en doc mais cela donne parfois des résultats différents. Par exemple, si le document dans MongoDB contient un tableau, alors ce tableau est décodé en doc en tant que bson.A type pas []interface{} type.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X