私はまったく新しいものですので、これは私がまだ取り上げていないかもしれませんが、どこでも良い例を見つけることはできません。Rhinoのモック抽象クラスのデフォルト動作を模擬しました
私は、デフォルトでは、抽象クラスから継承するすべてのクラスがコンストラクタでコレクションをインスタンス化することをアサーションしようとしています。
public abstract class DataCollectionWorkflow : SequentialWorkflowActivity
{
private readonly DataSet _output = new DataSet();
private List<DataCollectionParameter> _params = null;
public DataCollectionWorkflow()
{
_params = new List<DataCollectionParameter>();
}
public virtual IList<DataCollectionParameter> Parameters
{
get { return _params; }
set { _params = (List<DataCollectionParameter>)value; }
}
}
これをRhinoとどうやって嘲笑しますか? GenerateMock<DataCollectionWorkflow>
(またはスタブ)を実行すると、コンストラクタが実行され、モックのプライベートフィールド "_params
"が初期化されますが、モックの "Parameters
"プロパティは単にnullになります。
明らかに、生成された模擬サブクラスがプロパティの実装をオーバーライドしています。 Parametersプロパティを再実装しないようにする方法はありますか?
ありがとうございました。
フィールドを仮想にすることはできません。問題は、Parametersプロパティがオーバーライドされ、フィールドではなくなります。フィールドはちょうど良い初期化され...それはもはや模擬のプロパティにリンクされていません。 – womp