我使用鸦胆子和注释我栲命令的方法是这样的:如何对javanica @HystrixCommand注释方法进行单元测试?
@HystrixCommand(groupKey="MY_GROUP", commandKey="MY_COMMAND" fallbackMethod="fallbackMethod")
public Object getSomething(Object request) {
....
而且我想单元测试我的备用方法,而不必直接打电话给他们,也就是我想打电话给@HystrixCommand
注解的方法并在抛出500错误后让它自然流入回退。这一切都在单元测试之外运作。
在我的单元测试中,我使用弹簧MockRestServiceServer
返回500个错误,这部分工作正常,但Hystrix未在我的单元测试中正确初始化。在我的测试方法的开始,我有:
HystrixRequestContext context = HystrixRequestContext.initializeContext();
myService.myHystrixCommandAnnotatedMethod();
在此之后,我试图键搞定任何锥命令并检查是否有任何执行的命令,但该列表始终是空的,我用这个方法:
public static HystrixInvokableInfo<?> getHystrixCommandByKey(String key) {
HystrixInvokableInfo<?> hystrixCommand = null;
System.out.println("Current request is " + HystrixRequestLog.getCurrentRequest());
Collection<HystrixInvokableInfo<?>> executedCommands = HystrixRequestLog.getCurrentRequest()
.getAllExecutedCommands();
for (HystrixInvokableInfo<?> command : executedCommands) {
System.out.println("executed command is " + command.getCommandGroup().name());
if (command.getCommandKey().name().equals(key)) {
hystrixCommand = command;
break;
}
}
return hystrixCommand;
}
我意识到我失去了一些东西在我的单元测试的初始化,任何人都可以点我在正确的方向上怎么可以适当单元测试呢?
嗨@Oscar你找到了解决方案吗? –
@StefanoL nope,找不到任何解决方案。我仍然希望有人有办法做到这一点。 –
我想过编写名为XYZHystrixTest的单独测试类,它实际上是用Hystrix在原地启动Spring Context的。我没有看到任何其他解决方案来解决这个问题。 –