我正在使用 Mockito 1.9.5 来尝试和测试一种方法。这是方法:
@Autowire
AuditLogRepository auditlogRepository;
//method stuff abbreviated out
if (authentic.isAuthorized()) {
menuService.updateUserWithMenu( authentic );
AuditLog auditor = Helper.buildAuditor( authentic );
auditor.setAccessPoint( request.getRequestURL().toString() );
....
AuditLog createdAuditLog = auditlogRepository.save( auditor );
logger.debug( "Created AuditLog id = " + createdAuditLog.getID() );
...
}
这就是我试图测试它的方式:
@InjectMocks
LoginController loginController;
@Mock
AuditLog aLog;
@Mock
AuditLog createdAuditLog;
@Mock
AuditLogRepository auditlogRepositoryMock;
@Before
public void setUp() {
MockitoAnnotations.initMocks( this );
this.mockMvc = MockMvcBuilders.standaloneSetup( loginController ).build();
}
@Test
public void testLogin() throws Exception {
...
AuditLog aLog = mock( AuditLog.class );
when( auditlogRepositoryMock.save( aLog ) ).thenReturn(createdAuditLog );
when( createdAuditLog.getID() ).thenReturn( new Long( 1 ) );
看起来无论我做什么,Mockito 总是会返回 null,除了原语。但是我的代码将根据返回值进行操作。所以我的问题是有没有办法在不获取空指针的情况下进行测试?Mockito 可以从方法调用中返回一个对象吗?