У меня есть класс, который я хочу проверить:
type ApiGateway struct {
username string
password string
scsClient *scsClient.APIDocumentation
auth Auth
}
type Auth struct {
token string
validTo int32
}
func New(host string, scheme string, username string, password string) *ApiGateway {
var config = scsClient.TransportConfig{host, "/", []string{scheme}}
var client = scsClient.NewHTTPClientWithConfig(strfmt.Default, &config)
return &ApiGateway{username, password, client, Auth{}}
}
func (s *ApiGateway) isTokenValid() bool { ... }
Этот метод isTokenValid вызывается из любого другого метода внутри класса для проверки и / или обновления токена API.В тестах я хочу смоделировать этот метод, поэтому он всегда возвращает true, например.
Как мне это архивировать?
Редактировать: Мой код:
apiGateway.go
type StubAdapter struct {
ApeGatewayAdapter
}
type ApeGatewayAdapter interface {
isTokenValid() bool
}
type ApiGateway struct {
username string
password string
scsClient *scsClient.APIDocumentation
auth Auth
adapter ApeGatewayAdapter
}
type Auth struct {
token string
validTo int32
}
func New(host string, scheme string, username string, password string, a ApeGatewayAdapter) *ApiGateway {
var config = scsClient.TransportConfig{host, "/", []string{scheme}}
var client = scsClient.NewHTTPClientWithConfig(strfmt.Default, &config)
return &ApiGateway{username, password, client, Auth{}, a}
}
apiGateway_test.go
type MockAdapter struct {
ApeGatewayAdapter
}
func (m MockAdapter) isTokenValid() bool {
return true
}
func TestApiGateway_GetDevice(t *testing.T) {
var scsGateway = New("foo.com", "http", "testuser", "testpwd", MockAdapter{})
fmt.Println(scsGateway.isTokenValid())
}
Я ожидаю, что тест вызовет мой смоделированный метод и вернет true , которого нет.