繁体   English   中英

Lagom-带标题的测试服务电话

[英]Lagom - Testing Service Call with 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

如何编写一个使用自定义请求标头调用服务调用的测试? 我尝试将调用保留为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

    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM