2016-08-03 3 views
0

オクラホマ、私はMoqを見始めたので、これはノブの質問です。
は私がquick guide続いている、と私は特定のモデル返すようにセットアップするためにコールバックをしようとしています:私はコールにこの例外を取得コールバックでMoqを設定するには?

void Main() 
{ 
    var resultData = new MyModel(); 
    var mock = new Mock<IMyClass>(); 

    mock.Setup(x => x.Register(It.IsAny<string>())) 
     .Returns(new MyModel { Name = "Test" }) 
     .Callback<MyModel>((data) => 
     { 
      resultData = data; 
     }); 

    var parameter = "123"; 
    var result = mock.Object.Register(parameter); 
} 

public interface IMyClass 
{ 
    MyModel Register(string code); 
} 

public class MyModel 
{ 
    public string Name { get; set; } 
} 

を:

ArgumentExceptionが:タイプのオブジェクト「システム.String 'を に変換して' UserQuery + MyModel 'と入力することはできません。

私は間違っていますか?

答えて

1

Callback<T>メソッドのTは、メソッドのパラメータタイプがSetupと一致する必要があります。言い換えれば、Moqは、模倣されているメソッドと同じパラメータでコールバックメソッドを設定させます。

私はあなたがここで何をしようとしているのか正確には分かりません。あなたは自分のモックメソッドからの戻りMyModelオブジェクトを保存しようとしている場合は、次の操作を行います。

var returnedModel = new MyModel { Name = "Test" }; 
mock.Setup(x => x.Register(It.IsAny<string>())) 
    .Returns(returnedModel); 

あなたが与えられたstringパラメータを使用してMyModelを作成しようとしている場合は、次の操作を行います。

mock.Setup(x => x.Register(It.IsAny<string>())) 
    .Returns((string data) => new MyModel { Name = data }); 
関連する問題