IThing
üyesi GetValue()
tanımlanmamış olsa bile aşağıdaki örnekte FakeItEasy döndürme 0
. Benim sorum; Neden tanımlı olmayan bir üye çağrısından 0
değeri döndürülür ve atılan bir istisna değil; tanımlanmamış üyeleri çağırmak için istisnalar atmanın bir hayır-hayır olduğunu belirten birtakım genel alaycı/sahtekarlık/saplama çerçeve yazılım modeli var mı?İstisnasız çerçeveler oluşturmamanın nedeni nedir?
public interface IThing
{
int GetValue();
}
public class Thing: IThing
{
public int GetValue()
{
return 1000;
}
}
[TestMethod]
public void Test1()
{
var thing= A.Fake<IThing>();
// A.CallTo(() => thing.GetValue()).Returns(1);
var val = thing.GetValue(); // Not defined but returns 0 rather than throwing an exeption
Assert.AreEqual(1, val);
}
'var şey = A.Fake();' Bu sahte IThing nesne (bir sahte nesne oluşturur Bir ITing, bir Thing nesnesi değil). 0 sadece bir int'nin varsayılan değeri olacaktır (başka bir şey döndürmek için belirtmediğiniz gibi). Genel olarak istisna davranışı hakkında emin değilim ama her şey geçerli olduğu için bu durumda atar. –
Tone
@Tone Bu sorduğum şey değil. Tanımlanamayan bir üye, .NET Çalışma Zamanı'nda Güçlü Olarak Yazılırken çağrılırken beklenen bir davranış istisnasıdır ve benim sorum, Ataşman çerçevelerinin daha gevşek bir semantik nedenidir. –