Mocking usando Moq en c #

Tengo el siguiente código

public interface IProductDataAccess
{
    bool CreateProduct(Product newProduct);
}

ClaseProductDataAccess implementa esa interfaz.

public class ProductBusiness
{
    public bool CreateProduct(Product newProduct)
    {
        IProductDataAccess pda = new ProductDataAccess();
        bool result = pda.CreateProduct(newProduct);
        return result;
    }
}

n este caso, cómo crear una prueba unitaria paraCreateProduct método burlándose de laIProductDataAccess ¿interfaz? Pensé en tener una instancia pública deIProductDataAccess dentroProductBusiness e inicialícelo usandoMock<IProductDataAccess> object pero no es una buena práctica exponer el acceso a datos a la capa de la interfaz de usuario. ¿Alguien puede ayudarme

Respuestas a la pregunta(4)

Su respuesta a la pregunta