私のシナリオでは、オブジェクト パラメーターを受け取り、強く型付けされたクラス オブジェクトでリセットするサービス フレームワーク メソッドの 1 つをモックしたいと考えています。
public void Updatedata(object pvm)
{
var vm = new datamodel()
{
name = "test",
age = 100
};
pvm = vm;
}
コンパイルエラー「無効なコールバック。パラメーター(オブジェクト)を使用したメソッドのセットアップは、パラメーター(データモデル)を使用してコールバックを呼び出すことはできません。」以下のコードでモックを作成します。
mockderived.Setup(p => p.Updatedata(It.IsAny<datamodel>()))
.Callback<datamodel>(p =>
{
p.name ="My name is test";
});
オブジェクト型ではなくデータモデルをパラメーターとして受け入れるように updatedata メソッドを変更すると、モックは正常に機能します。コンパイル エラーを回避するために、オブジェクトをパラメーターとして渡すことでコードを変更しました。
mockderived.Setup(p => p.Updatedata(It.IsAny<object>()))
.Callback<object>(p =>
{
p = new datamodel() {name = "My name is test"};
});
それによって実行されるコードは、期待どおりにデータモデルの値を変更しませんでした。