J'avais un programme pour vérifier l'état de la pile de CloudFormation sur AWS. Il est nécessaire de tester tous les statuts car le traitement est différent pour chaque statut renvoyé.
Vous ne pouvez pas contrôler l'état de la pile AWS CloudFormation ici.
Écrire le code de test dans Junit J'ai décidé de spécifier (simuler) le statut renvoyé par l'API.
Ci-dessous la partie de code à tester
describeStacks.java
/*Création d'un client pour l'exécution de l'API CloudFormation*/
AmazonCloudFormationAsync CFclient = AmazonCloudFormationAsyncClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials("hope", "huga")))
.build();
/*DescribeStacks Spécifiez le nom de la pile cible*/
DescribeStacksRequest describeStacksRequest = new DescribeStacksRequest();
describeStacksRequest.withStackName("hogestack");
/*API pour obtenir le statut de la pile ici(describeStacks)(Où tu veux te moquer)*/
DescribeStacksResult describeStacksResult = CFclient.describeStacks(describeStacksRequest);
describeStacksTest.java
@RunWith(MockitoJUnitRunner.class)
public class describeStacksTest {
/*Déclarer la classe à se moquer*/
@Mock AmazonCloudFormationAsync AmazonCloudFormationMock;
/*Spécifiez la classe pour injecter la classe à simuler*/
@InjectMocks describeStacksClass describeStacks = new describeStacksClass();
@Before
public void init() {
/*Initialisation fictive*/
MockitoAnnotations.initMocks(this);
}
@Test
public void Contrôle de l'état de la pile() {
/*Créer une classe de valeurs de retour lorsque describeStacks est exécuté*/
DescribeStacksResult describeStacksResult = new DescribeStacksResult();
Stack stacks = new Stack();
stacks.setStackStatus(StackStatus.CREATE_COMPLETE); //Définir StackStatus(Cette fois, CRÉER_Spécifiez le statut de COMPLETE)
describeStacksResult.withStacks(stacks);
/*Créer une classe avec les mêmes arguments que la cible de test exécute*/
DescribeStacksRequest describeStacksRequest = new DescribeStacksRequest();
describeStacksRequest.withStackName("hogestack");
/*Spécifiez les arguments et la valeur de retour lors de l'exécution de describeStacks de la classe simulée*/
when(AmazonCloudFormationMock.describeStacks(DescribeStacksRequest)).thenReturn(describeStacksResult);
Puisque la classe AmazonCloudFormationAsync était publique, elle était facilement moquée. Puisqu'il s'agit d'une classe fournie en tant qu'API, il était facile de se moquer car elle était publique. Il est vrai que la classe Resule est également facile à configurer (vous attendez-vous à ce qu'AWS soit moquée et têtue?) Je pense que d'autres API peuvent être testées de la même manière.
Recommended Posts