При следующей настройке Spring не выбирает преобразователь, определенный в файле JSON, который находится в каталоге mappings
, но делает это, когда я объявляю его непосредственно в тестовом коде.
@Configuration
public class WiremockConfiguration {
@Bean
WireMockConfigurationCustomizer optionsCustomizer() {
return new WireMockConfigurationCustomizer() {
@Override
public void customize(WireMockConfiguration options) {
options.extensions(BodyDefinitionTransformer.class);
}
};
}
}
{
"request": {
"method": "POST",
"urlPattern": "/some/thing"
},
"response": {
"status": 200,
"bodyFileName": "my_payload.json",
"transformers": [
"body-transformer"
],
"headers": {
"Content-Type": "application/json"
}
}
}
public class BodyDefinitionTransformer extends ResponseDefinitionTransformer {
@Override
public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource files,
Parameters parameters) {
return responseDefinition; //checking if this work by putting breakpoint here
}
@Override
public boolean applyGlobally() {
return false;
}
@Override
public String getName() {
return "body-transformer";
}
}
@ContextConfiguration
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource
@AutoConfigureWireMock(port = 9632)
class DummyTestClass extends Specification {
def "some dummy test" () {
when:
stubFor(post("/some/thing").willReturn(aResponse()
//.withTransformers("body-transformer") transformer work if I declare it in this way
.withTransformerParameter("test", "test"
)))
// rest of my test where execute above request
}
}
Код отлично работает, когда я объявляю его с помощью .withTransformers("body-transformer")
, но когда я помещаю имя преобразователя в массив transformers
в файле JSON, он не работает. У вас есть идеи, почему?