I've mocked a repository interface and I want to return a specific value when a method is called. However, it always returns what's in the dummy implementation.
type MockUserRepo struct {
mock.Mock
}
// dummy method to fulfil the interface
func (m *MockUserRepo) FindByUsername(username string) (*User, error) {
return nil, nil
}
Now, I setup the mock as such
m := NewMockUserRepo()
m.On("FindByUsername", mock.Anything).Return(&User{
Username: "test"
}, nil)
// inject mock
svc := NewService(m)
user, err := svc.FindByUsername("anything") // always nil,nil
The return value (user, err
) is always nil
(or whatever is returned in MockUserRepo.FindByUsername
Is there something I'm doing wrong?