Lagom - 使用 Headers 测试服务调用

Lagom - Testing Service Call with Headers

我正在尝试遵循有关 "Handling headers." 的文档 here 我不知道如何使用 headers 测试服务调用调用。通常,我会做

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

我注意到 ServerServiceCallHeaderServiceCall 接受 invokeWithHeaders(...) 并且我的 ServiceCall 被实现为 HeaderServiceCall,但是每当我尝试更改我的服务时API 到 ServerServiceCallHeaderServiceCall,我得到:

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

如何编写一个测试来调用带有自定义请求的服务调用 headers?我尝试在 API 中将调用保持为 ServiceCall,使用 HeaderServiceCall 实现,并在测试中将调用转换为 HeaderServiceCall,但是当试图做到这一点。任何帮助深表感谢。谢谢。

我刚刚采用了我的测试代码来检查它:

 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));
    };
}

我的api:

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

并测试:

@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

    });
}