Moq - Comment retourner un moqué d'objet à partir d'une méthode?

Je suis nouveau sur le Moq, et souhaitez l'utiliser non seulement dans les tests unitaires où j'semblent pour la plupart l'obtenir, mais dans le code.

Compte tenu de cette entité:

 namespace TestBed.Domain.Entities
 {
    public class Person
    {
        public string LastName { get; set; }
        public string FirstName { get; set; }
        public string PhoneNumber { get; set; }
        public string JobTitle { get; set; }
    }
 }

et ce résumé du Référentiel:

using TestBed.Domain.Entities;

namespace TestBed.Domain.Abstract
{
    public interface IPersonRepository
    {
        Person GetPerson();
    }
}

Je veux utiliser Moq pour remplir un mannequin personne (!) et peuplées de "l'objet" du Référentiel de la méthode. Comment puis-je faire cela?

using TestBed.Domain.Abstract;
using TestBed.Domain.Entities;
using Moq;

namespace TestBed.Domain.Concrete
{
    public class MockPersonReqpository
    {
        Person GetPerson()
        {
            Mock<IPersonRepository> mock = new Mock<IPersonRepository>();
            mock.Setup(m => m.GetPerson()).Returns(new Person()
                                                       {
                                                           FirstName = "Joe",
                                                           LastName = "Smith",
                                                           PhoneNumber = "555-555-5555"
                                                       });
            return mock.Object //NO
        }

    }
}

OriginalL'auteur Sam Gentile | 2011-07-13