Pregunta

buenas tardes

Tengo una clase y tiene un método de extensión asociado.

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

Método de extensión:

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

Ahora estoy tratando de usar Rhino y probar este método

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

}

Suponiendo que estoy escribiendo mi prueba y ya tengo una interfaz que llama a getpersoninfo ()

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

y la espera principal es

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

¿Cómo puedo crear una prueba para la extensión METOD GETTOKEN?

¿Fue útil?

Solución

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.

Otros consejos

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

Extension methods in Mono 2.4 and RhinoMocks 3.5

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top