现在对于单元测试,我需要 authenticate 方法来假装它正常工作,在我的例子中什么都不做,所以我可以测试方法本身是否完成预期的工作(根据单元测试原则在其他地方测试身份验证,但是需要在该方法中调用身份验证)
这是我的 TestNG 类,我需要在其中制作用于身份验证的模拟对象:
package in.hexgen.api.facade;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.Authentication;
import org.testng.annotations.Test;
import com.hexgen.api.facade.security.HexGenPermissionEvaluator;
public class HexGenPermissionEvaluatorTest {
private static final Logger logger = LoggerFactory.getLogger(HexGenPermissionEvaluatorTest.class);
Object name="akash";
Object permission="CREATE_REQUISITION";
Authentication authentication;
//@Resource(name = "permissionEval")
private HexGenPermissionEvaluator permissionEval;
@Test
public void hasPermission() {
//authentication.setAuthenticated(true);
logger.debug("HexGenPermissionEvaluator Generate - starting ...");
permissionEval.hasPermission(authentication,name, permission);
logger.debug("HexGenPermissionEvaluator Generate - completed ...");
}
}
如何做到这一点。
最好的问候
最佳答案
考虑到 permissionEval
对象调用 authentication.isAuthenticatedFor(name,permission)
,使用 Mockito (https://code.google.com/p/mockito/):
import static org.mockito.Mockito.*
...
@Test
public void test(){
// Given
Authentication authentication = mock(Authentication.class);
when(authentication.isAuthenticatedFor(eq(name),eq(permission)).thenReturn(true);
// When
permissionEval.hasPermission(authentication,name, permission);
// Then
// Do you asserts/verify
}
关于java - Spring Security 中用于身份验证的模拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15521310/