Я ожидаю, что аннотация @EnableKubernetesMockClient
активирует KubernetesMockServer
в режиме CRUD, что означает, что мне не нужно имитировать операции PUT через API. С этим ожиданием я написал следующий код:
@EnableKubernetesMockClient
public class Test {
KubernetesMockServer server;
KubernetesClient client;
@Test
public void test_create_custom_job() {
MyJobDetails myJobDetails = new MyJobDetails();
String jobName = "job1-202211200345-prod";
myJobDetails.setname("job1-202211200345-prod");
//Other setters to follow
...
PlatformOperationsService svc = new PlatformOperationsService(client);
svc.createCustomJob(myJobDetails);
// Expect no other job to exist
Job createdJob = client.batch().v1().jobs().list().getItems().get(0);
assertTrue(jobName.equals(createdJob.getMetadata().getName()));
// Other asserts will follow to see if all the other inputs were supplied correctly
...
}
}
Однако я получаю следующее исключение из строки:
Job createdJob = client.batch().v1().jobs().list().getItems().get(0);
Failure executing: POST at: https://localhost:51913/apis/batch/v1/namespaces/test/jobs. Message: Not Found.
io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: POST at: https://localhost:51913/apis/batch/v1/namespaces/test/jobs. Message: Not Found.
at app//io.fabric8.kubernetes.client.KubernetesClientException.copyAsCause(KubernetesClientException.java:238)
at app//io.fabric8.kubernetes.client.dsl.internal.OperationSupport.waitForResult(OperationSupport.java:517)
at app//io.fabric8.kubernetes.client.dsl.internal.OperationSupport.handleResponse(OperationSupport.java:551)
at app//io.fabric8.kubernetes.client.dsl.internal.OperationSupport.handleResponse(OperationSupport.java:535)
at app//io.fabric8.kubernetes.client.dsl.internal.OperationSupport.handleCreate(OperationSupport.java:328)
at app//io.fabric8.kubernetes.client.dsl.internal.BaseOperation.handleCreate(BaseOperation.java:675)
at app//io.fabric8.kubernetes.client.dsl.internal.BaseOperation.handleCreate(BaseOperation.java:88)
at app//io.fabric8.kubernetes.client.dsl.internal.CreateOnlyResourceOperation.create(CreateOnlyResourceOperation.java:42)
at app//io.fabric8.kubernetes.client.dsl.internal.BaseOperation.create(BaseOperation.java:1073)
at app//io.fabric8.kubernetes.client.dsl.internal.BaseOperation.create(BaseOperation.java:88)
Поэтому я не уверен, правильно ли мое ожидание или мне чего-то не хватает, чтобы заставить эту работу работать. Если мое ожидание неверно, то нет смысла использовать эту среду Mock для моего использования, поскольку я не хочу имитировать и тестировать один и тот же набор объектов в одном и том же методе тестирования. Любая помощь высоко ценится!
Я ожидаю, что аннотация @EnableKubernetesMockClient активирует KubernetesMockServer в режиме CRUD.
Это не. К аннотации есть дополнительный параметр — @EnableKubernetesMockClient(crud = true)
Это действительно сработало. Было бы полезно, если бы была документация, которой я мог бы следовать.