Gamlor cevabı benim için çalıştı, ama ben birden fazla parametreyi içeren bir çözüm arıyordu çünkü John Carpenter'ın yorumum genişletmek düşündüm. Bu sayfaya karışan diğer insanların da benzer bir durumda olabileceğini düşündüm. Bu bilgiyi Moq documentation'da buldum.
Gamlor'un örneğini kullanacağız, ancak AsyncHandle yönteminin iki argüman aldığını varsayalım: string
ve SomeResponse
nesnesi.
var mock = new Mock<Handler>();
string stringResult = string.Empty;
SomeResponse someResponse = null;
mock.Setup(h => h.AsyncHandle(It.IsAny<string>(), It.IsAny<SomeResponse>()))
.Callback<string, SomeResponse>((s, r) =>
{
stringResult = s;
someResponse = r;
});
// do your test
new Foo(mock.Object).Bar(22);
Assert.AreEqual("expected string", stringResult);
Assert.IsNotNull(someResponse);
Temelde sadece, Uygun türde başka It.IsAny<>()
eklemek Callback
yöntemine başka tür ekleyin ve uygun şekilde Lambda ifade değiştirmeniz gerekir.
siz "AsyncHandle" (ekstra "n") kastettiniz? Ve Handler için kodu gönderebilir veya standart bir tipse tam nitelikli tip adını belirtebilir misiniz? – TrueWill
Düşüncelerinizi göstermek için iskelet testinizi gösterebilir misiniz? Ben sizin tarafınızdan açıkça anlaşılırken, bizim tarafımızdan açık bir şekilde, uzun spekülatif bir cevap vermeden, soruyu cevaplamak için zamanı almayan birine benziyor. –
Ne Foo ne de Bar() ne de bunun gibi bir şey yoktur. Başvuru koşullarından rahatsızlık duymadan durumumu göstermek için sadece bir demo kodu. Ve sadece cevabı aldım, elde etmeyi umuyordum. – Jan