Je développe des tests pour une application. Il existe une méthode qui a un params
comme paramètre. J'ai configuré la méthode à l'aide de Moq mais lorsque j'exécute le test, la valeur de retour de la méthode est nulle, ce qui signifie qu'elle n'est pas moquée.
Voici un exemple de code :
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;
}
}
Le code fictif ressemble à ceci :
var mock = new Mock<ITicketManager>();
mock.Setup(m => m.GetFirstTicketInQueueIfMatches(It.IsAny<string>()))
.Returns(p => {
if(p.Contains("A"))
return "A";
return null;
});
Pourquoi ne frappe-t-il jamais la méthode moquée?