1

こんにちは

クラスがあり、関連付けられた拡張メソッドがあります。

public class Person{
    public int ID {get;set}
    public string Name {get;set}
}

延長方法:

public static class Helper {
   public static int GetToken(this Person person){
       int id = 0;
       //Something here is done to read token from another service...
       return id;
   }
}

今、私はRhinoを使用してこの方法をテストしようとしています

public void readPersonToken(int personId) {

   var person = Person.GetPersonInfo(personId);//we consume a service here
   Console.Writeline(person.GetToken());//get token is consuming another service

}

テストを作成していて、GetPersonInfo() を呼び出すインターフェイスが既にあるとします。

var _interface = MockRepository.GenerateMock<IMyInterface>();

そして主な期待は

_interface.Expect(x => x.GetPersonInfo(2))
          .Return(new Person { ID=2, Name = "A Stubbed Monica!" });

拡張メソッド GetToken のテストを作成するにはどうすればよいですか?

4

2 に答える 2

2

拡張メソッドは、静的メソッドのシンタックス シュガーにすぎません。したがって、本当に必要なのは、ここで静的メソッドをモックする機能です。残念ながら、これは Rhino Mocks では不可能です。

詳細については、次の StackOverflow スレッドを参照してください

静的メソッドをモックするには、実際に CLR プロファイラーを使用してメソッド呼び出しをインターセプトするモック フレームワークが必要です。スレッドが言及しているように、TypeMock はこれを行うことができるはずです。

于 2011-03-30T15:46:11.473 に答える
0

拡張メソッドの Stub を作成することで可能になるはずです。

Mono 2.4 と RhinoMocks 3.5 の拡張メソッド

于 2012-07-11T23:48:08.827 に答える