2017-11-15 1 views
0

ich viele Beispiele von Mock Tests, aber keine gesehen habe, die zeigen, wie man so etwas wie <graphql.execution.base.ResolveInfo object at 0x106f002a8>Wie __init__ und Resolver mit verschiedenen Argumenten verspotten

Zum Beispiel verspotten könnte, wenn ich, dass die beiden Methoden testen wollte in dieser Klasse funktionierte richtig, wie würde ich die Werte verspotten, die übergeben werden?

class mySearch(graphene.ObjectType): 
    my_search = graphene.Field(
     MySearchWrapper, 
     query = graphene.String(description="Search query") 
    ) 

    def __init__(self, args, context, info): 
     super(mySearch, self).__init__() 


    def resolve_my_search(self, args, context, info): 
     return promisify(MySearchWrapper, args, context, info) 

Die __init__ Methode zurückgibt:

args: {}, context: <Request 'http://localhost:8080/graphql' [POST]>, info: <graphql.execution.base.ResolveInfo object at 0x106f000c8>

Und die resolve_my_search Methode zurückgibt:

args: {'page_type': [u'MyCorgi', u'YourCorgi'], 'query': u'Corgi family', 'domain': u'corgidata.com'}, context: <Request 'http://localhost:8080/graphql' [POST]>, info: <graphql.execution.base.ResolveInfo object at 0x106f002a8>

Ich weiß, dass ich das Wörterbuch Wert mit mock_args.json.return_value verspotten kann aber ... nicht sicher über die Anfrage und das Objekt. Irgendwelche Ideen? Beratung? Ich habe schon eine Woche damit verbracht und keinen Ausweg gefunden.

Antwort

0

Verwenden Sie unittest.mock Python-Paket. Hier ein Beispiel:

from unittest import mock 

info = mock.create_autospec(graphql.execution.base.ResolveInfo) 
info.context.user = AnonymousUser() 
Verwandte Themen