Domanda

Buon pomeriggio

Ho una classe e ha un metodo di estensione associato.

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

Metodo di estensione:

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;
   }
}
.

Ora sto cercando di usare Rhino e prova questo metodo

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

}
.

Supponendo che sto scrivendo il mio test e ho già un'interfaccia che chiama GetPersonInfo ()

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

e il principale aspetto è

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

Come posso creare un test per l'estensione Metod GetToken?

È stato utile?

Soluzione

Extension methods are just syntatic sugar for static methods. So what you really need is the ability to mock the static method here. Unfortunately this is not possible in Rhino Mocks.

See the following StackOverflow thread for more details

To mock a static method you need a mocking framework which actually uses the CLR profiler to intercept method calls. As the thread mentions TypeMock should be able to do this.

Altri suggerimenti

It should be possible by creating Stub for the extension methods.

Extension methods in Mono 2.4 and RhinoMocks 3.5

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top