public class Foo
{
public string Test()
{
return GetName();
}
public string GetName()
{
return "Foo";
}
}
public class Bar : Foo
{
public new string GetName()
{
return "Bar";
}
}
new Foo().Test(); // Foo
new Bar().Test(); // also Foo
が、私はそう、私はユニットテストTest()
の振る舞いをGetName()
が予期しない値を生成することができることをFoo
ための「ラッパー」を作成しようとしていた継承されたクラスのヘルパーメソッドをオーバーロードする/非表示にする場合。私はGetName()
の動作がFoo
にASP.NETパイプラインイベントに依存するため直接影響を与えることはできません。挙動は
私は "バー" を返しますが、明らかに私は継承モデルを誤解している
new Bar().Test();
を期待していました。
私は必要なものを達成する方法はありますか?
あなたは 'Foo'にアクセスできますか? 'Foo'.GetName'()をバーチャルにして、' Bar'でオーバーライドできますか? –
@スティーブはい私はそれを行うことができましたが、私が試したときの動作は同じようでした。そして、純粋にテストを動作させる目的で 'Foo'を変更しないことが明らかです。 – fearofawhackplanet
@ShellShockはこれを答えにしました。これは必要に応じて動作するはずです。それを「純粋に動作するテストを得るために」変更することは、それを見る方法の1つです。それを「よりテスト可能」に変更することは、より積極的な傾きです。:) –