0

I have following method to UnitTest:

public MessageMediaSoapClient client { get; set; }

public uint[] CheckSMSDeliveryReports()
{
    try
    {
        client = GetSMSSoapClient();

        var deliveryReports = client.CheckReports();

        var delieveredMessageIds = 
            deliveryReports
                .reports
                .Where(delivery => delivery.status == DeliveryStatusType.delivered)
                .Select(message => message.uid)
                .ToArray()
                ;

        if (deliveryReports != default(CheckReportsResultType) && deliveryReports.reports.Count() != 0)
        {
            client.ConfirmReports(
                deliveryReports
                    .reports
                    .Where(delivery=> delivery.status == DeliveryStatusType.delivered)
                    .Select(messages => messages.receiptId).
                    ToList()
            );
        }
        return delieveredMessageIds;
    }
    catch (Exception)
    {
        throw;
    }

}

I have tried setting up mu Unit Test for initial usage like below:

[TestMethod]
public void CheckDeliverReports_ReportCountGreaterThanZeo_ConfirmReportsGetCalled()
{
    //Arrange
    Mock<SmsSoapClient> mockSoapClient = new Mock<SmsSoapClient>();
    mockSoapClient.Setup(x => x.Authenticate()).Returns(true);
    mockSoapClient.SetupAllProperties();


    //Act


    //Assert

}

How do I setup a fake for public MessageMediaSoapClient client { get; set; } and then verify if its methods are called.

Simsons
  • 12,295
  • 42
  • 153
  • 269
  • Are you just wanting to see that `CheckSMSDeliveryReports()` has been invoked during your test? If so, see [here](http://stackoverflow.com/questions/347818/using-moq-to-determine-if-a-method-is-called) – Rob Mar 29 '17 at 01:37
  • @Rob, I wanted to check if ConfirmReports gets called, now extracted client as property of the class – Simsons Mar 29 '17 at 01:50

0 Answers0