Какой тип у ProductId? Если это Guid, то смотри какие у него конструкторы есть.
Проще всего через Guid.Parse.
PS:
А DbContext мокать не нужно. Используй вместо этого EF Core inmemory, либо Sqlite с размещением в оперативной памяти.
Будет что-то типа:
var conn = new SqliteConnection("DataSource=:memory:");
var options = new DbContextOptionsBuilder<ApplicationContext>()
.UseSqlite(conn)
.Options;
using var dbContext = new ApplicationContext(options);
dbContext.Products.Add(new Product { /*...*/});
dbContext.SaveChanges();
var controller = new CartController(dbContext);
// ...
PPS:
Если ты хочешь тестировать контроллеры - значит ты что-то делаешь не так. Возможны два варианта:
1. Ты наговнокодил и затолкал бизнес-логику в контроллеры.
Если так, то выноси логику в сервисы и делай так, чтобы контроллер зависел от сервисов.
2. Тебе на самом деле нужны интеграционные / api-тесты / e2e-тесты. В таком случае тебе нужно не контроллер конструировать, а поднимать сервер и тестировать при помощи http-запросов. В таком случае следует ещё и по пути полноценную СУБД поднимать, а не мок.