Jav*_*ons 3 java testng spring mocking spring-security
现在对于单元测试我需要验证方法才能假装它正常工作,在我的情况下什么都不做,所以我可以测试方法本身是否做了预期的工作(根据单元测试原则在其他地方测试身份验证,但验证需要在那个方法里面调用)
这是我的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 ...");
}
}
Run Code Online (Sandbox Code Playgroud)
这该怎么做.
最好的祝福
考虑到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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |