Alaylanmış bir yöntemin bir çağırma parametresini değiştirmek mümkün mü? Özellikle, aşağıdaki örnekte önceden doldurulmuş bir bayt dizisine değiştirmeyi düşünüyorum.Moq ile alay yönteminin bir çağırma parametresini nasıl değiştirebilirim?
Örnek:
int MockedClass.Read(byte[] buffer, int offset, int count)
Açıklama: Read
yükleri verilen bayt dizisi buffer
içine offset
okuma count
bayt çağrılması
.
Şimdi, uygulama kodumda Read
numaralı çağrı yapıldıktan sonra arabelleğin doldurulmasını istiyorum. Mümkün mü?
Evet ise, Read
numaralı telefona nasıl yapılır? Mümkünse her seferinde farklı bir ara belleğe dönmek için sıralı aramalar istiyorum. Birim testi çalıştırırken
MockedClass.Setup(x => x.Read(It.IsAny<byte[]>(), It.IsAny<int>(), It.IsAny<int>()).Callback((byte[] buffer, int offset, int count) => buffer[0] = 0xAA);
bana garip bir sorun verir:
DÜZENLEME: Böyle Setup
komutunu kullanarak
Read
çağrısı yaptı ve temsilci kod sonra (buffer[0] = 0xAA
) hata ayıklayıcısını yürütür, buffer
'un aslında null
olduğunu ve bu komutu yürüttükten sonra birim test yürütmesinin durduğunu gösterir. Benim sözdizimim büstü mi yoksa bu bir böcek mi?
Merhaba. Cevap için teşekkürler. Bu modeli kullanırsam, birim testi, temsilci yürütüldüğünde geri aramanın en son noktasında duracaktır. Sorunun hata ayıklaması, arabellek bayt dizisinin "boş" olduğunu gösterdi. Bunun neden olabileceği hakkında bir fikrin var mı? –
Atamadığınız sürece boştur. Yukarıdaki Kurulum çağrısı, arabellek değişkenini atamaz * var olan bir değişkenle eşleşir. Düzenlemenizde, 'It.IsAny() 'ile eşleşirsiniz, ancak arayanın değeri sağlaması gerekir. –