私はアプリケーションのテストを開発中です。パラメータとしてparams
配列を持つメソッドがあります。私はMoqを使ってメソッドを設定しましたが、テストを実行すると、メソッドの戻り値はヌルです。つまり、モックされていません。ここでパラメータの設定方法
は、コードサンプルです:
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;
});
?
@DiegoACによって一致する必要があると考えている:まあとにかく 'null'なのでを返す*条件付き*それを持っています。 '' p 'に '' A' 'が含まれていない場合、代わりに" Foo "を返そうとしましたか?あなたは少なくともそれが呼び出されているのを見ていただろう... –
優秀な答えジョン。ありがとう。実際、私はただ一つの文字列しか受け取っていませんでした。コンパイラについての説明は非常に便利でした。 –