Катарсис с SpringBootTest
У меня возникла интересная проблема, когда API, предоставляемый Katharsis, не обнаружен, когда я пытаюсь вызвать их в SpringBootTest. Я могу подключиться к Spring MVC API, используя тот же подход, но конечные точки Kartharsis возвращают HTTP 404 внутри теста. Я могу подключиться к конечным точкам Kartharsis при подключении через внешние процессы, например, вызывая их через браузер.
Я пробовал несколько решений, заменив Spring TestRestTemplate на RestTemplate или OkHTTP, все имеют ту же проблему.
Вот фрагмент моего кода:
public class ProgramControllerTest_Search extends WebApiLayerIntegrationTest{
void "should get one program by id"() {
given:
Program program = new Program(programTitle: "Test Title")
program = this.programRepository.save(program)
when:
def response = this.testRestTemplate.getForEntity("jsonapi/programs/" + (program.id), Map.class)
then: "response status is ok"
noExceptionThrown()
response.statusCode == HttpStatus.OK
and: "response body has expected values"
response.body.data.id == program.id
response.body.data.attributes.programTitle == "Test Title"
}
}
@Slf4j
@Stepwise
@SpringBootTest(classes = [EscobarApplication.class],
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles(["integration-test", "my-local-test-config"])
public abstract class WebApiLayerIntegrationTest extends Specification {
@LocalServerPort
private int httpPort
@Autowired
protected TestRestTemplate testRestTemplate
@Autowired
private DataSourceProperties dsProp
@PostConstruct
void printTestEnvironmentInfo() {
log.info(">>> WebApiLayerIntegrationTest, using Datasource: url=${dsProp.getUrl()}, user=${dsProp.getUsername()}.")
}
protected int getHttpPort() {
return httpPort
}
}
@Entity
@Audited
@JsonApiResource(type = "programs")
public class Program extends BaseEntity {
@Id @JsonApiId
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
@Column(length = 128, name = "program_title")
@Size(min = 2, max = 128)
private String programTitle;
}