Skip to content

Instantly share code, notes, and snippets.

@reetasingh
Created May 4, 2023 03:25
Show Gist options
  • Save reetasingh/ba667a2f81bbd4d633f5c9dc00379532 to your computer and use it in GitHub Desktop.
Save reetasingh/ba667a2f81bbd4d633f5c9dc00379532 to your computer and use it in GitHub Desktop.
mocking PersonDB using mock package
package main
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
type mockTestDB struct {
mock.Mock
}
func (m *mockTestDB) Save(person *Person) error {
args := m.Called(person)
return args.Error(0)
}
func TestPersonServiceImpl_CreatePerson_NoError(t *testing.T) {
testDb := new(mockTestDB)
p := &Person{
ID: 1,
Name: "John D",
}
testDb.On("Save", p).Return(nil)
personServiceImpl := new(PersonServiceImpl)
personServiceImpl.db = testDb
err := personServiceImpl.CreatePerson(p)
assert.NoError(t, err)
}
func TestPersonServiceImpl_CreatePerson_Error(t *testing.T) {
testDb := new(mockTestDB)
p := &Person{
ID: 1,
Name: "John D",
}
testDb.On("Save", p).Return(fmt.Errorf("save operation failed"))
personServiceImpl := new(PersonServiceImpl)
personServiceImpl.db = testDb
err := personServiceImpl.CreatePerson(p)
assert.Error(t, err)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment