История изменений
Исправление derlafff, (текущая версия) :
либо переписать все на интерфейсы
да
получается везде нужно пихать switch с преобразованиями
нет
Как например я могу протестировать вот такой обьект, замочив ssh.Client ?
Оче условно, лень компелять
//go:generate mockery --name SSHClient
type SSHClient interface {
// все методы, что ты используешь
// *ssh.Client автоматически к этому преобразуется где-нибудь снаружи около New
Something() error
}
type Conn struct {
SSHClient SSHClient
}
func (conn *Conn) RunCommands(cmds ...string) (string, error) {
_ = conn.SSHClient.Something()
// ...
}
// ...
func TestSshClient(t *testing.T) {
var mock = new(mocks.SSHClient)
mock.On("Something").Return(nil).Once()
var mockClient = Conn{SSHClient: mock}
// ...
}
Как бонус - твой код перестает быть зависимым от конкретной реализации ssh-клиента.
Исправление derlafff, :
либо переписать все на интерфейсы
да
получается везде нужно пихать switch с преобразованиями
нет
Как например я могу протестировать вот такой обьект, замочив ssh.Client ?
Оче условно, лень компелять
//go:generate mockery --name sshClient
type sshClient interface {
// все методы, что ты используешь
// *ssh.Client автоматически к этому преобразуется где-нибудь снаружи около New
Something() error
}
type Conn struct {
SSHClient SSHClient
}
func (conn *Conn) RunCommands(cmds ...string) (string, error) {
_ = conn.SSHClient.Something()
// ...
}
// ...
func TestSshClient(t *testing.T) {
var mock = new(mocks.SSHClient)
mock.On("Something").Return(nil).Once()
var mockClient = Conn{SSHClient: mock}
// ...
}
Как бонус - твой код перестает быть зависимым от конкретной реализации ssh-клиента.
Исправление derlafff, :
либо переписать все на интерфейсы
да
получается везде нужно пихать switch с преобразованиями
нет
Как например я могу протестировать вот такой обьект, замочив ssh.Client ?
Оче условно, лень компелять
//go:generate mockery --name sshClient
type sshClient interface {
// все методы, что ты используешь
// *ssh.Client автоматически к этому преобразуется где-нибудь снаружи около New
}
type Conn struct {
SSHClient SSHClient
}
func (conn *Conn) RunCommands(cmds ...string) (string, error) {
_ = conn.SSHClient.Something()
// ...
}
// ...
func TestSshClient(t *testing.T) {
var mock = new(mocks.SSHClient)
mock.On("Something").Return(nil).Once()
var mockClient = Conn{SSHClient: mock}
// ...
}
Как бонус - твой код перестает быть зависимым от конкретной реализации ssh-клиента.
Исправление derlafff, :
либо переписать все на интерфейсы
да
получается везде нужно пихать switch с преобразованиями
нет
Как например я могу протестировать вот такой обьект, замочив ssh.Client ?
//go:generate mockery --name sshClient
type sshClient interface {
// все методы, что ты используешь
// *ssh.Client автоматически к этому преобразуется где-нибудь снаружи около New
}
type Conn struct {
SSHClient SSHClient
}
func (conn *Conn) RunCommands(cmds ...string) (string, error) {
_ = conn.SSHClient.Something()
// ...
}
// ...
func TestSshClient(t *testing.T) {
var mock = new(mocks.SSHClient)
mock.On("Something").Return(nil).Once()
var mockClient = Conn{SSHClient: mock}
}
Как бонус - твой код перестает быть зависимым от конкретной реализации ssh-клиента.
Исправление derlafff, :
либо переписать все на интерфейсы
да
получается везде нужно пихать switch с преобразованиями
нет
Как например я могу протестировать вот такой обьект, замочив ssh.Client ?
//go:generate mockery --name sshClient
type sshClient interface {
// все методы, что ты используешь
// *ssh.Client автоматически к этому преобразуется где-нибудь снаружи около New
}
type Conn struct {
SSHClient sshClient
}
func (conn *Conn) RunCommands(cmds ...string) (string, error) {
_ = conn.sshClient.Something()
// ...
}
Как бонус - твой код перестает быть зависимым от конкретной реализации ssh-клиента.
Исправление derlafff, :
либо переписать все на интерфейсы
да
получается везде нужно пихать switch с преобразованиями
нет
Как например я могу протестировать вот такой обьект, замочив ssh.Client ?
//go:generate mockery --name sshClient
type sshClient interface {
// все методы, что ты используешь
// *ssh.Client автоматически к этому преобразуется где-нибудь в New
}
type Conn struct {
SSHClient sshClient
}
func (conn *Conn) RunCommands(cmds ...string) (string, error) {
_ = conn.sshClient.Something()
// ...
}
Исходная версия derlafff, :
либо переписать все на интерфейсы
да
получается везде нужно пихать switch с преобразованиями
нет
Как например я могу протестировать вот такой обьект, замочив ssh.Client ?
//go:generate mockery --name sshClient
type sshClient {
// все методы, что ты используешь
}
type Conn struct {
SSHClient sshClient
}
func (conn *Conn) RunCommands(cmds ...string) (string, error) {
_ = conn.sshClient.Something()
// ...
}