Hello 리포지토리를 사용하는 Service 코드 작성

SimpleHelloService

자동구성으로 만든 JdbcTemplate을 응용하는 코드 작성 - 간단한 기능추가

Change Signiture 단축키 : cmd + F6

image.png

@Service
public class SimpleHelloService implements HelloService {
    private final HelloRepository helloRepository;

    public SimpleHelloService(HelloRepository helloRepository) {
        this.helloRepository = helloRepository;
    }

    @Override
    public String sayHello(String name) {
        this.helloRepository.increaseCount(name);

        return "Hello " + name;
    }
}

문제점

image.png

HelloServiceTest를 인스턴스를 만들어서 실행하면 충분히 기능을 검증할 수 있었기 때문에 단위 테스트로 작성하였음(스프링 컨테이너를 띄워서 동작시킬 이유가 없음)

그러나 SimpleHelloService가 동작을 하려면 DB를 액세스하는 리포지토리 빈이 필요해졌기 때문에 변경이 필요해짐

2가지 결정사항 존재

  1. 컨테이너를 전부 띄우는 HellobootTest로 전환을 한 뒤 SimpleHelloService 빈을 가지고 오고 빈을 테스트용으로 초기화하여 실제 테스트하는 코드를 만들어 볼 수 있음 (→ 단순한 단위 테스트)

    ⇒ HelloRepository 인터페이스를 구현한 인터페이스를 작성

    image.png

HelloServiceCountTest

sayHello를 호출하면 카운트가 올라가는 것을 확인하는 테스트

@HellobootTest
public class HelloServiceCountTest {
    @Autowired
    HelloService helloService;

    @Test
    public void sayHelloIncreaseCount() {
        helloService.sayHello("Toby");

    }
}