Ты мокаешь не Products, а объект у которого есть свойство Products. У него еще могут быть другие свойства, например Services, Ты указываешь m => m.Products что б настроить Products, будешь указывать m => m.Services что б настроить Services
примерно да у тебя есть mock - это Mock<IRepository>, про весь IRepository SetupGet(m=>m.Products) возвращает ISetupGetter<IRepository, IEnumerable<Product>> - объект для настройки IRepository.Products А Returns(products) настраивает, что геттер этого самого Products возращает конкретный экземпляр IEnumerable<Product>