我的方法在一个Java类中,就像这样...
//some business logic
String userId = org.apache.logging.log4j.ThreadContext.get("userId"); //I need mocking for this using Spock or Mockito
//more business logic
return map;
}
字符串
我试图使用Spock框架为上述方法编写一个测试,ThreadContext是碍事的-我不能模仿它来返回我想要的字符串。我试图在Spock测试的设置过程中将自定义值放入ThreadContext.(不工作)
def setupSpec() {
ThreadContext.put("userId", "sriram")
}
型
1条答案
按热度按时间dsekswqp1#
Spock不能开箱即用地模拟Java类的静态方法,只能模拟Groovy类。使用其他工具,如Mockito,Powermock,JMockit或我自己的工具Sarek,这是可能的。如果我是你,我不会这样做。对我来说,你的示例代码可以像这样运行:
字符串
所以
ThreadContext.put("userId", "sriram")
可以做你想要的事情。如果它没有,你的问题是与Spock无关的,例如:setupSpec()
中你太早了,因为你的测试代码在执行过程中设置了相同的属性,例如在//some business logic
部分。setupSpec()
,setup()
还是在你的特征方法中。