Метод установки с массивом параметров

Я разрабатываю тесты для приложения. Есть метод, который имеет в качестве параметра массив params . Я настроил метод с помощью Moq, но когда я запускаю тест, возвращаемое значение метода равно null, что означает, что он не подвергается насмешкам.

Вот пример кода:

public interface ITicketManager {
    string GetFirstTicketInQueueIfMatches(params string[] ticketsToMatch);
}

public class TicketManager : ITicketManager {
    private Queue<string> ticketQueue = new Queue<string>();

    public string GetFirstTicketInQueueIfMatches(params string[] ticketsToMatch) {
        var firstQueuedTicket = ticketQueue.Peek();
        var firstQueuedTicketMatchesAnyOfRequested = ticketsToMatch.Any(t => t == firstQueuedTicket);

        if(firstQueuedTicketMatchesAnyOfRequested)
            return firstQueuedTicket;

        return null;
    }
}

Фальшивый код выглядит так:

var mock = new Mock<ITicketManager>();

mock.Setup(m => m.GetFirstTicketInQueueIfMatches(It.IsAny<string>()))
    .Returns(p => { 
    if(p.Contains("A"))
            return "A";

    return null;
});

Почему он никогда не задействует фиктивный метод?

47
задан ruffin 7 September 2018 в 20:30
поделиться