Я, вероятно, нашел одно из различий в следующем.
Если вы пытаетесь смоделировать свойство Readonly, вы должны использовать SetupGet, так как в этом случае SetupProperty не работает. Принимая во внимание, что SetupProperty может использоваться для не только для чтения свойств, если вы хотите установить ожидание.
Например, ниже не будет работать
public interface IXyz
{
int Id { get; }
}
//Test Side Code
var _mock = new Mock<IXyz>();
_mock.SetupProperty(x => x.Id, 1054);
Если вы попытаетесь выполнить приведенный выше код, он появится с сообщением
System.ArgumentException: свойство IXyz.Id доступно только для чтения
Так что, если вы измените код ниже, он будет работать
_mock.SetupGet(x => x.Id).Returns(1054);