Ich hatte ein Programm, um den Stapelstatus von CloudFormation unter AWS zu überprüfen. Es ist erforderlich, alle Status zu testen, da die Verarbeitung für jeden zurückgegebenen Status unterschiedlich ist.
Sie können den Status des AWS CloudFormation-Stacks hier nicht steuern.
Schreiben Sie den Testcode in Junit Ich habe beschlossen, den von der API zurückgegebenen Status anzugeben (zu verspotten).
Unten finden Sie den zu testenden Codeteil
describeStacks.java
/*Erstellen eines Clients für die Ausführung der CloudFormation-API*/
AmazonCloudFormationAsync CFclient = AmazonCloudFormationAsyncClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials("hope", "huga")))
.build();
/*DescribeStacks Geben Sie den Namen des Zielstapels an*/
DescribeStacksRequest describeStacksRequest = new DescribeStacksRequest();
describeStacksRequest.withStackName("hogestack");
/*API, um hier den Stapelstatus abzurufen(describeStacks)(Wo du dich lustig machen willst)*/
DescribeStacksResult describeStacksResult = CFclient.describeStacks(describeStacksRequest);
describeStacksTest.java
@RunWith(MockitoJUnitRunner.class)
public class describeStacksTest {
/*Erklären Sie die Klasse zum Verspotten*/
@Mock AmazonCloudFormationAsync AmazonCloudFormationMock;
/*Geben Sie die Klasse an, in die die zu verspottende Klasse eingefügt werden soll*/
@InjectMocks describeStacksClass describeStacks = new describeStacksClass();
@Before
public void init() {
/*Scheininitialisierung*/
MockitoAnnotations.initMocks(this);
}
@Test
public void Steuern des Stapelstatus() {
/*Erstellen Sie eine Klasse von Rückgabewerten, wenn descriptionStacks ausgeführt wird*/
DescribeStacksResult describeStacksResult = new DescribeStacksResult();
Stack stacks = new Stack();
stacks.setStackStatus(StackStatus.CREATE_COMPLETE); //Stellen Sie StackStatus ein(Diesmal ERSTELLEN_Geben Sie den Status von COMPLETE an)
describeStacksResult.withStacks(stacks);
/*Erstellen Sie eine Klasse mit denselben Argumenten, die das Testziel ausführt*/
DescribeStacksRequest describeStacksRequest = new DescribeStacksRequest();
describeStacksRequest.withStackName("hogestack");
/*Geben Sie die Argumente und den Rückgabewert an, wenn Sie verifyStacks der verspotteten Klasse ausführen*/
when(AmazonCloudFormationMock.describeStacks(DescribeStacksRequest)).thenReturn(describeStacksResult);
Da die AmazonCloudFormationAsync-Klasse öffentlich war, konnte sie leicht verspottet werden. Da es sich um eine Klasse handelt, die als API bereitgestellt wird, war es leicht zu verspotten, da sie öffentlich war. Es ist wahr, dass die Resule-Klasse auch leicht zu setzen ist (Erwarten Sie, dass AWS verspottet und hartnäckig ist?) Ich denke, andere APIs können auf die gleiche Weise getestet werden.