Разве это не смущает? Вы пытаетесь смоделировать метод GetUser, но вы устанавливаете Returns для свойства возвращаемого значения этой функции. Вы также хотите указать свойство возвращаемого типа на основе смоделированного метода.
Вот способ более понятный:
mockMembershipService.Setup(x => x.GetUser(It.IsAny<string>())
.Returns<string>(GetMembershipUser);
Вот способ создать макет членства:
private MembershipUser GetMembershipUser(string s)
{
Mock<MembershipUser> user =new Mock<MembershipUser>();
user.Setup(item => item.ProviderUserKey).Returns(GetProperty(s));
return user.Object;
}
Затем вы пишете метод для установки этого свойства:
private string GetProperty(string s)
{
if(s.Contains("Joe"))
return "1234abcd";
else if(s.Contains("Tracy"))
return "5678efgh";
}