Как я высмеиваю объект, возвращаемый из родительского объекта все по одному и тому же вызову - PullRequest
1 голос
/ 17 апреля 2019

, так что это моя строка кода в моем конкретном методе:

var patron = patronService.GetPatron(new GetPatronRequest() { PatronId = request.PatronId }).Patron;

, где мой метод GetPatron возвращает объект GetPatronResponse, для которого объявлен объект Patron.

Это мой TestMethod пока:

[TestMethod]
public void WhenGetPatronPropertyPricingIsCalled_ThenGetPatronPropertyPricingResponseIsReturned()
{
    // Given
    var request = new GetPatronPropertyPricingRequest
    {
         PatronId = "1",
         ServiceCodes = new List<string> { "1" }
    };

    var repo = new Mock<IPatronPropertyPricingServiceRepository>();
    var patronService = new Mock<IPatronsService>();
    var patronPropertyPrice = new PatronPropertyPrice() { CurrencySymbol = "£", ServiceCode = "1", MinimumPrice = 5.00m, MaximumPrice = 10.00m };
    var patronResponse = new GetPatronResponse(new GetPatronRequest());
    var patronRequest = new GetPatronRequest(){ PatronId = "1"};
   // patronService.Setup(x => x.GetPatron(It.IsAny<GetPatronRequest>()).Patron).Returns(patronResponse.Patron);

    patronService.Setup(x => x.GetPatron(It.IsAny<GetPatronRequest>()).Patron).Returns(It.IsAny<Patron>());
    // patronService.Object.GetPatron(new GetPatronRequest() {PatronId = request.PatronId});
    // patronPropertyPrice.Setup(tt => new PatronPropertyPrice() { CurrencySymbol = "£", ServiceCode = "1", MinimumPrice = 5.00m, MaximumPrice = 10.00m });
    repo.Setup(repository => repository.GetPropertyPricing(request.PatronId)).Returns(patronPropertyPrice);

    var svc = new PersistingPatronPropertyPricingService(repo.Object,patronService.Object);

    // When
    var response = svc.GetPropertyPricing(request);

    // Then
    Assert.AreEqual(patronPropertyPrice, response.PatronPropertyPrices);
}

Что бы я ни пытался в конкретном методе, он всегда либо возвращает ошибку не установленного объекта, либо неверную настройку не виртуальной ошибки в тот момент, когда я пытаюсь установить ответ.

1 Ответ

2 голосов
/ 17 апреля 2019

Я бы предположил, что GetPatron возвращает что-то вроде PatronResponse со свойством Patron.

В этом случае изменить

patronService.Setup(x => x.GetPatron(It.IsAny<GetPatronRequest>()).Patron).Returns(It.IsAny<Patron>());

до

var patronResponse = new PatronResponse { Patron = new Patron() };
patronService
    .Setup(x => x.GetPatron(It.IsAny<GetPatronRequest>()))
    .Returns(patronResponse);

It.IsAny<T>() предназначен для использования в выражении установки, а не в качестве переменной.

...