Я использую https://github.com/vektra/mockery для создания моих макетов файлов.
Предположим, у меня есть этот тест для функции GetQualifyingListOfBooks
. Подпись для (смоделированного) клиентского метода GetListOfBooks
:
func GetListOfBooks(ctx context.Context, in *GetListOfBooksRequest, opts ...grpc.CallOption) (*GetListOfBooksResponse, error)
Цель : я хочу смоделировать ситуацию, когда GetListOfBooks
возвращает ошибкуИтак, я написал следующее:
package whatever
import (
"context"
"testing"
"github.com/stretchr/testify/assert"
mock "github.com/stretchr/testify/mock"
mockClients "github.com/MyOrg/MyApp/internal/app/myservice/mocks"
)
func TestGetQualifyingListOfBooks (t *testing.T) {
client := &mockClients.BookClient{}
client.On("GetListOfBooks", mock.Anything, mock.Anything).Return(nil, mock.AnythingOfType("error"))
realInstance.bookClient = client
b, err := GetQualifyingListOfBooks(realInstance, 10) // this calls `GetListOfBooks`
assert.Nil(t, b)
assert.NotNil(t, err)
}
но он паникует с этим:
--- FAIL: TestGetQualifyingListOfBooks (0.00s)
panic: assert: arguments: Error(1) failed because object wasn't correct type: Error(1) [recovered]
panic: assert: arguments: Error(1) failed because object wasn't correct type: Error(1)
Как вы высмеиваете возвращаемое значение ошибки?