Учусь мокать на Го с помощью библиотеки testify.
Есть простая структура, метод которой позволяет умножать A и B.
package multiplier
type Multiplier interface {
Calculate(num int, times int) int
}
func NewMultiplier() Multiplier {
return new(multiplier)
}
type multiplier struct {
}
func (m multiplier) Calculate(num int, times int) int {
return num * times
}
func CalculateFiveTimesFive(m Multiplier) int {
return m.Calculate(5, 5)
}
Есть тест, который тестирует умножение 5 на 5 и я хочу проверить что возвращается именно 25.
package multiplier_test
import (
"awesomeproject/internal/multiplier"
"github.com/stretchr/testify/mock"
"testing"
)
type MultiplierTestObject struct {
mock.Mock
}
func (o *MultiplierTestObject) Calculate(num int, times int) int {
args := o.Called(num, times)
return args.Int(0)
}
func TestCalculateFiveTimesFive(t *testing.T) {
m := new(MultiplierTestObject)
// Обратите внимание на эту строку (ниже)
m.On("Calculate", 5, 5).Return(25)
multiplier.CalculateFiveTimesFive(m)
m.AssertExpectations(t)
}
Но проблема в том, что я никак не могу заасертить это.
Т.е. что бы я не вставил вместо 25, тест будет пройден:
m.On("Calculate", 5, 5).Return("могу хоть строку", 9999, 1111) // тест будет пройден
Что я делаю не так?