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 $$$$$$$$$$$$$$$$$$$$$$$$$$$$")
})
}