请您帮助我为该代码定义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(),但在调用该方法时,我不能返回某些内容,因此,我完全无法模拟这几行代码。
谢谢你的帮助
发布于 2016-05-17 11:46:08
我的建议是:忘记了使用PowerMock的。
如果您必须模拟静态方法,那么围绕它构建您自己的小包装类。然后,为了进行测试,您的包装程序可以返回您的控件;以及用于生产使用;您的包装器只调用静态方法。
PowerMock看起来是许多问题的解决方案;但它迟早会导致出现更多的问题。
认真地说:如果您的设计只能用PowerMock进行测试,这通常是一个明确的指示,说明您的设计是坏的。因此:专注于在测试中对代码进行重新加工;而不是把时间花在一个弊大于利的工具上,比如PowerMock。
我花了无数个小时来解决PowerMock问题,而不是开始编写“更好地测试”生产代码.我已经编写了数百或数千个测试,而不再需要PowerMock。
https://stackoverflow.com/questions/37272445
复制相似问题