func (s *ObjectSyncer) objectType(obj runtime.Object) string {
	if obj != nil {
		gvk, err := apiutil.GVKForObject(obj, s.Client.Scheme())
		if err != nil {
			return fmt.Sprintf("%T", obj)
		}
		return gvk.String()
	}
	return "nil"
}
objectType returns the type of a runtime.Object.
package syncer
import (
	"context"
	"errors"
	"fmt"
	"github.com/go-test/deep"
	"k8s.io/apimachinery/pkg/runtime"
	"sigs.k8s.io/controller-runtime/pkg/client"
	"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
	"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
	logf "sigs.k8s.io/controller-runtime/pkg/log"
)
type ObjectSyncer struct {
	Owner          client.Object
	Obj            client.Object
	SyncFn         controllerutil.MutateFn
	Name           string
	Client         client.Client
	previousObject runtime.Object
}