Весна / Спок Мок - PullRequest
       8

Весна / Спок Мок

0 голосов
/ 08 июня 2019

У меня есть приложение Spring Boot 2.1, использующее Spock 1.3 в Groovy 2.5 как:

org.spockframework:spock-core:1.3-groovy-2.5

Я пытаюсь создать интеграционные тесты (API, службы и т. Д.), В которых я высмеиваю другие микро-службы.Вот базовая спецификация, которая у меня есть:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class BaseSpecification extends Specification {

    private DetachedMockFactory mockFactory = new DetachedMockFactory()

    @LocalServerPort
    int port

     def getUrl() {
        return "http://127.0.0.1:" + port + "/";
    }

    @TestConfiguration
    static class Config {
        def detachedMockFactory = new DetachedMockFactory()

        @Bean
        SecurityService securityService() {
            return detachedMockFactory.Mock(SecurityService, name: "securityService")
        }
    }

И типичный тест выглядит так:

class ProjectControllerTest extends BaseSpecification {

@Autowired
private TestRestTemplate restTemplate;

@Autowired
SecurityService securityService

def "test missing API_Key "() {

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.add(authHeader, authValue)
    headers.add(keyName, keyValue)
    HttpEntity<Project> request = new HttpEntity<>(project, headers);

    when:
    ResponseEntity<Project> responseEntity = restTemplate.postForEntity(getUrl(), request, Project.class)

    then:
    securityService.readJws(authValue) >> jwsResponse                
    responseEntity.status == result

    where:
    result | keyName   | keyValue | authHeader      | authValue     | jwsResponse
    401    | "API_Key" | "1234"   | "Authorization" | getValidJWT() | buildManager()

    // ...
}

Однако, когда я запускаю это, вызывается реальная служба, и я могу фактическишаг через отладчик.Я хочу, чтобы возвращалось значение, а не фактический вызов метода.У меня будет несколько внешних служб, которые будут проверены, чтобы можно было запускать тесты.

Что я делаю не так?

...