真剣にリファクタリングするのに十分な自信を持つために、危険なレガシーコードにテストを追加しています。問題の 1 つは、コードを書いた人が明らかにコードをテスト可能にしようとしなかったことです (単一の単体テストを書いたことがないことを考えると!)。
よくある問題は、現在インターフェイスがなく、11 レベルの深さの継承チェーンがあるだけであるということです。テスト中のクラスをその依存関係から分離するために Rhino モックを使用していますが、インターフェースではなくクラスをモックしているため、読み取り専用プロパティにvirtual
キーワードがある場合にのみスタブできます。
私の現在の考えではvirtual
、プロパティにキーワードを追加するだけです。既存の依存関係チェーンにさらにオブジェクトを追加する予定はなく、テストを作成できるようになります。
キーワードを追加することに反対する議論はありvirtual
ますか?それとも、テストを導入するためにこれは許容できる妥協点ですか?
サンプルコード...
テストクラスで:
var someClassStub = MockRepository.GenerateStub<SomeClass>();
someClassStub.Stub(s => s.SomeProperty).Return("Test");
いくつかのクラスで:
public virtual string SomeProperty {
get {
return someDependency.SomeMethod();
}
}