我使用鴉膽子和註釋我栲命令的方法是這樣的:如何對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的。我沒有看到任何其他解決方案來解決這個問題。 –