Функция Mock Interface не вызывается
Я пытаюсь написать Go Unit Test, используя библиотеку testify. Я следил за этим блогом http://goinbigdata.com/testing-go-code-with-testify/. Я передал макетированный интерфейс функции newCalculator, но все еще вызывается Random1 интерфейса Random вместо функции Random1 структуры randomMock.
calculator.go
package calculator
type Random interface {
Random1(limit int) int
}
func newCalculator(rnd Random) Random {
return calc{
rnd: rnd,
}
}
type calc struct {
rnd Random
}
func (c calc) Random1(limit int) int {
return limit
}
calculator_test.go
package calculator
import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"testing"
)
type randomMock struct {
mock.Mock
}
func (o randomMock) Random1(limit int) int {
args := o.Called(limit)
return args.Int(0)
}
func TestRandom(t *testing.T) {
rnd := new(randomMock)
rnd.On("Random1", 100).Return(7)
calc := newCalculator(rnd)
assert.Equal(t, 7, calc.Random1(100))
}
Output on running: go test
--- FAIL: TestRandom (0.00s)
calculator_test.go:22:
Error Trace: calculator_test.go:22
Error: Not equal:
expected: 7
actual : 100
Test: TestRandom
FAIL
exit status 1
1 ответ
Я получил это сам. Сначала я пропустил звонок в struct rnd.
func (c calc) Random1(limit int) int {
return c.rnd.Random1(limit)
}