2009-06-20 15 views
6

ねえ人... asp.net MVCで並べ替えをしようとしています。このMoqコードはRhinoMockのように見えます

私はMoqを使ってこの例をネットで見つけましたが、基本的に私はそれを理解しています.ApplicationAppPathModifierが呼び出されると、渡された値を返します。

私はRhino Mockでこれをどうやってやっているのでしょうか?

var response = new Mock<HttpResponseBase>(); 
response.Expect(res => res.ApplyAppPathModifier(It.IsAny<string>())) 
      .Returns((string virtualPath) => virtualPath); 
+0

この実際に動作する可能性があり、ちょうどテストになりました...そののSOD法、あなたはその後、答えを見つける質問を投稿したら... (response.ApplyAppPathModifier(アルギニン .Is.Anything)).FOR SetupResult を確認します。IgnoreArguments() 。 Do((Func )((arg)=> {return arg;})); – Keith

答えて

3

、のSOD法、あなたが助けを投稿したら、あなたは(たとえしばらく検索した後)、5分後にそれを見つける:これを試してみてください。とにかく他人の利益のためにこの作品:

SetupResult 
    .For<string>(response.ApplyAppPathModifier(Arg<String>.Is.Anything)).IgnoreArguments() 
    .Do((Func<string, string>)((arg) => { return arg; })); 
1

コードを誤解しない限り、私はコードをかなり単純化することができます。私は上記のように

var response = MockRepository.GenerateMock<HttpResponseBase>(); 

response.Stub(res => res.ApplyAppPathModifier(Arg<String>.Is.Anything)) 
         .IgnoreArguments() 
         .Return(virtualPath); 
+0

@womp、thanks mate。あなたの例では、既存の変数であるvirtualPathは何ですか?私がしたのは、実際にApplyAppPathModifierに渡された変数を返すことです。これは実行時までわかりません。私は実際に上記の私のコメントを使用して動作するようにして今すぐ投稿する – Keith

+0

ApplyAppPathModifierに渡される引数を知りたい場合は、wompのコードを使用して次の行を追加することができます: var args = response.GetArgumentsForCallsMadeOn(x = > x.ApplyAppPathModifier(Arg .Is.Anything)); –

8

SetupResult方法とは対照的に、あなたはスタブメソッドを使用している場合は、このための構文は以下の通りです:

response.Stub(res => res.ApplyAppPathModifier(Arg<String>.Is.Anything)) 
       .Do(new Func<string, string>(s => s));