メンバGetValue()
が定義されていなくても、FakeItEasyは0
を返します。私の質問は、なぜ0
の値が未定義のメンバー呼び出しから返され、例外はスローされません。定義されていないメンバーを呼び出すための例外をスローすることは、いいえではないことを指示する、一般的な偽装/偽装/スタブリングフレームワークソフトウェアパターンがありますか?例外をスローしないフレームをモックする理由は何ですか
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の事= A.Fakeは();'これは、偽のIThingオブジェクト(ある偽のオブジェクトを作成しますIThing、Thingオブジェクトではない)。 0はintのデフォルト値になります(何も返さないように指定していないので)。私は一般的に例外の動作についてはわかりませんが、すべてが有効なのでこのケースではスローされません。 –
Tone
@Toneこれは私が求めていることではありません。ランタイム例外は、.NETランタイムで未定義メンバーを厳密に型指定されているものとして呼び出すときの予想される動作です。私の疑問は、Mockingフレームワークがより緩やかな意味を持つ理由です。 –