Voici le code que j'essaye de simuler,
java.lang.IllegalArgumentException: null
at com.amazonaws.services.dynamodbv2.document.PutItemOutcome.<init>(PutItemOutcome.java:33) ~[aws-java-sdk-dynamodb-1.11.400.jar:?]
at com.amazonaws.services.dynamodbv2.document.internal.PutItemImpl.doPutItem(PutItemImpl.java:86) ~[aws-java-sdk-dynamodb-1.11.400.jar:?]
at com.amazonaws.services.dynamodbv2.document.internal.PutItemImpl.putItem(PutItemImpl.java:63) ~[aws-java-sdk-dynamodb-1.11.400.jar:?]
at com.amazonaws.services.dynamodbv2.document.Table.putItem(Table.java:168) ~[aws-java-sdk-dynamodb-1.11.400.jar:?]
Ce que j'ai essayé est ci-dessous,
mockStatic(AmazonDynamoDBClientBuilder.class);
when(AmazonDynamoDBClientBuilder.defaultClient()).thenReturn(Mockito.mock(AmazonDynamoDB.class));
PowerMockito.mockStatic(PropertyUtil.class);
when(PropertyUtil.get(Constants.Some__ID_MAPPING_TABLE_NAME)).thenReturn("SOME_TABLE_NAME");
Table vTable = mock(Table.class);
PutItemSpec vPutItemSpec = mock(PutItemSpec.class);
PutItemResult vPutItemResult = new PutItemResult();
PowerMockito.whenNew(PutItemSpec.class).withAnyArguments().thenReturn(vPutItemSpec);
PowerMockito.when(vTable.putItem(vPutItemSpec)).thenReturn(vPutItemOutcome);
Et l'erreur que je reçois à cause de cela est ci-dessous,
this.dynamoDb.getTable(PropertyUtil.get(Constants.SOME_TABLE_NAME))
.putItem(
new PutItemSpec()
.withItem(new Item().withString("ID", pId).withString("eId", pEId)
.withString("activeInd", pActiveInd)));
S'il vous plaît suggérez, ce que je dois corriger, je suis nouveau sur Mock et JUnit. Merci d'avance.
3 Réponses :
Mais même cette ligne devra être moquée. Ma question porte sur la nécessité de se moquer de certaines dépendances.
Mockito.when(mockTable.putItem(Mockito.any(PutItemSpec.class)). thenCallRealMethod();
En utilisant:
- Mockito
- Junit
Dans mon cas, je dois déclarer dans mon Junit un paramètre de type Table (import com.amazonaws.services.dynamodbv2. document.Table) avec une notation @Mock
Puis dans mon @Test Je dois utiliser Mockito.when () avec un faux retour, voici mon exemple de code:
public class ClassName {
@Mock private Table tableMock;
@Test
public void shouldMockTableInfoForDynamoBDTable() {
Mockito.when(tableMock.getItem((GetItemSpec) any()))
.thenReturn(
Item.fromJSON(
"json: example"));
subject.myMethodUnderTest();
}
}
Essayez avec Map resourceResult = new HashMap (); PowerMockito.whenNew (PutItemSpec.class) .withItem (resourceRes ult) .thenReturn (vPut ItemSpec);