golang - tdd
golang
에서 mock을 만들 때 만들어진 패키지를 통해 go generate
명령어를 통해 만들 수도 있으나, interface
를 다 구현해야된다는 단점이 있습니다. 그래서 테스트 코드 작성 시 직관적으로 필요한 부분만 구성하고 싶을 때 사용하는 방법을 공유드립니다.
프로젝트 레이아웃
Interface
package auth
type Service interface {
CheckSpam(tenant string, ani string) (bool, error)
CheckTodayHoliday(tenant string, ani string) (bool, error) {
}
unimpl 구성
package unimpl
import ".../internal/app/auth"
type AuthServiceUnImpl struct{}
// CheckSpam implements auth.Service
func (*AuthServiceUnImpl) CheckSpam(tenant string, ani string) (bool, error) {
panic("unimplemented")
}
// CheckTodayHoliday implements auth.Service
func (*AuthServiceUnImpl) CheckTodayHoliday(tenant string, ani string) (bool, error) {
panic("unimplemented")
}
var _ auth.Service = (*AuthServiceUnImpl)(nil)
사용 시
type AUthServiceMock struct {
authsvc.AuthServiceUnImpl
}
func (m *CallsServiceMock) CheckSpam(tenant string, ani string) (bool, error) {
.. 필요한 method만 작성 가능
}
설명
umimplement
를 구성하여 해당 서비스에 대한 내용을 자동 완성으로 만듭니다. 그 다음 사용할 mock
구조체에서 embed
하여 필요한 method
만 기술하여 테스트를 진행합니다.
댓글남기기