1

I want to set test reportdata from my unit test function as i m mocking GetTestFunc but in real GetTestFunc is returning only error and is setting my pointer variable TestReport.

but while using mock we are returning but seeting of pointer variable is not happening so i want to assign expected values in TestReport pointer variable so i can write Ut for other path of the method.

using "github.com/stretchr/testify/mock"

-- model.go --

type TestReport struct {
    Id           string 
    Data         string 
    ReportData   string 
}

-- get_data_handler.go --

func (t *test) GetTestReport(xyz string) interface{} {
    var testReport model.TestReport

    err := t.db.GetTestFunc(table_name, "id", xyz, &testReport)
    var report map[string]interface{}
    if err == nil {
        fmt.Println(testReport)
        var resultReportData map[string]interface{}
        reportDataByte := []byte(testReport.Data)

    }
}

-- get_data_handler_test.go --

func (db *MockedDb) GetTestFunc(table, key, Value string, out interface{}) error {
    args := db.Called(table, Key, Value, out)
    return args.Error(0)
}

func TestGetTestReport(t *testing.T) {
    testReport := model.TestReport{
        Id:        "123456789",
        FirstName: `[{"id":454866976,"newid":"123456789"}]`,

        ReportData: `{
                "Id": "test1",
                "Data": [{
                    "Id": 454866976,
                    "moredata": [{
                            Value": "12345"
                        },
                        {
                            "text": "abc",
                            "value": "12345678"
                        }
                    ]
                }]
            } Status:Available}`,
    }
    mockedDbObj.On("GetTestFunc", mock.Anything, mock.Anything, mock.Anything, mock.AnythingOfType("*model.TestReport")).Return(nil, testReport).Run(func(args mock.Arguments) {
        fmt.Println("inside run $$$$$$$$$$$$$$$$$$$$$$$$$$$$")
        fmt.Println(args.Get(3))
        arg := args.Get(3).(*model.testReport)
        arg = &testReport

        fmt.Println("end $$$$$$$$$$$$$$$$$$$$$$$$$$$$")
    })
}

0 Answers0