У меня есть такие выражения, как
public void dummyMethod() {
CreateTableRequest ctr = dynamoDBMapper.generateCreateTableRequest(RolePolicies.class);
ctr.setProvisionedThroughput(new ProvisionedThroughput(30L, 5L));
TableUtils.createTableIfNotExists(amazonDynamoDB, ctr);
}
Я пытаюсь создать для него UT с помощью:
@PrepareForTest(TableUtils.class)
@Test
public void verifyRoleTableOnDynamo() throws Exception
{
Mockito.doReturn(new CreateTableRequest()).when(dynamoDBMapper).generateCreateTableRequest(any());
Mockito.doReturn(new CreateTableResult()).when(amazonDynamoDB).createTable(ctr);
PowerMockito.mockStatic(TableUtils.class);
Mockito.when(tableUtils_mock.createTableIfNotExists(mock(AmazonDynamoDB.class),mock(CreateTableRequest.class)))
.thenReturn(true); //This line throws Exception
// PowerMockito.doReturn(true).when(TableUtils.createTableIfNotExists(amazonDynamoDB,ctr));
testClassObject.dummyMethod();
//There should be no Exception in this case.
Assert.assertTrue(true); // Other Assert
}
Вместо насмешки и возврата значения PowerMockito вызывает фактическую реализацию метода createTableIfNotExists:
Я получаю ошибку:
org.mockito.exceptions.misusing.WrongTypeOfReturnValue: не может быть возвращено логическое значение createTable () createTable () должно возвращать CreateTableResult
К вашему сведению: Amazon SDK реализует его как:
public static final boolean createTableIfNotExists(final AmazonDynamoDB dynamo, final CreateTableRequest createTableRequest) {
try {
dynamo.createTable(createTableRequest);
return true;
} catch (final ResourceInUseException e) {
//Statements
}
return false;
}