您能帮我为该代码定义PowerMock吗?
String role = "ROLE_WARP_PUBLISH_PRIVATE";
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
for (GrantedAuthority auth : authorities)
{
if(auth.getAuthority().equals(role))
{
if (publishCheckbox == true)
{
getScenarioService().makePublic(scenarioVersionId);
}
}
}
因此,我知道必须模拟
getContext()
的方式,但是调用此方法时我无法返回任何内容,因此我完全无法模拟这几行。感谢您的帮助
最佳答案
我的建议:忘记使用PowerMock。
如果必须模拟静态方法,则可以围绕它构建自己的小包装器类。然后,为了进行测试,包装器可以返回您控制的内容;以及用于生产用途;您的包装器仅调用static方法。
PowerMock看起来可以解决许多问题。但要早于晚,这将是造成更多问题的原因。
认真地说:如果您的设计只能通过PowerMock进行测试,则通常很明显地表明您的设计很糟糕。因此:专注于重新测试您的代码;而不是将时间花在诸如PowerMock之类的弊大于利的工具上。
我花了无数小时试图解决PowerMock问题。从开始编写“更好的测试”生产代码开始……我已经编写了成百上千的测试,而不再需要PowerMock。
关于java - JUnit中的PowerMock,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37272445/