2017-01-19 5 views
0

Ich versuche, die Dokumentation here in Bezug auf "Handling Header" zu folgen. Ich kann nicht herausfinden, wie Service Call Aufruf mit Headern zu testen. Normalerweise würde ichLagom - Testing Service Call mit Kopfzeilen

service.sayHello().invoke(...) 

nur tun, bemerkte ich, dass ServerServiceCall und HeaderServiceCall akzeptieren invokeWithHeaders(...) und meine ServiceCall als HeaderServiceCall implementiert ist, aber wenn ich versuche, meine Service-API zu ServerServiceCall oder HeaderServiceCall, bekomme ich zu ändern:

Error in custom provider, java.lang.IllegalArgumentException: Service calls must return ServiceCall, subtypes are not allowed 

Wie kann ich einen Test schreiben, der den Serviceaufruf mit benutzerdefinierten Anforderungsheadern aufruft? Ich habe versucht, den Anruf als ServiceCall in der API zu halten, mit HeaderServiceCall zu implementieren und den Anruf auf HeaderServiceCall im Test zu werfen, aber ich habe eine Cast-Ausnahme, wenn ich das versuche. Jede Hilfe wird sehr geschätzt. Vielen Dank.

Antwort

1

Ich habe gerade mein Testcode nahm zu überprüfen:

public HeaderServiceCall<NewUser, RegUserStatus> addUser(String id) { 

    return (reqHeaders, postedUser) -> { 
     System.out.println(reqHeaders.getHeader("Referer")); 
     PersistentEntityRef<UserCommand> ref = persistentEntityRegistry.refFor(UserEntity.class, id); 
     return ref.ask(new UserCommand.RegisterUser(id, postedUser)).thenApply(stat -> Pair.create(ResponseHeader.OK, stat)); 
    }; 
} 

mein api:

ServiceCall<NewUser, RegUserStatus> addUser(String id); 

und Test:

@Test 
public void testIt() { 
    withServer(defaultSetup(), server -> { 
     UsersService service = server.client(UsersService.class); 
     RegUserStatus created = service.addUser("aaa").handleRequestHeader(
       rh -> rh.withHeader("Referer" ,"winter") 
     ).invoke(new NewUser("aaa")).toCompletableFuture().get(5, SECONDS); 
     assertEquals(true, created.ok); // default greeting 

    }); 
} 
+0

Sie sind eigentlich nicht die Anforderung zu modifizieren Header in Ihrem Test. – ehaydenr

+0

Ich habe es jetzt korrigiert – jarek000000