Pergunta

Boa tarde

Eu tenho uma classe e tem associado um método de extensão.

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

Método de extensão:

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

Agora estou tentando usar o Rinoceronte e testar 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

}

Supondo que eu estou escrevendo o meu teste e já ter uma interface que chama GetPersonInfo()

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

e o principal é Esperar

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

como posso criar um teste para a extensão metod GetToken?

Foi útil?

Solução

Os métodos de extensão são apenas syntatic sugar para métodos estáticos.Então, o que você realmente precisa é a capacidade de simulação o método estático aqui.Infelizmente isso não é possível no Rhino Zomba.

Consulte o seguinte StackOverflow thread para mais detalhes

A simulação de um método estático, você precisa de um zombando quadro que, na verdade, usa o perfil do CLR para interceptar chamadas de método.Como o segmento menciona TypeMock deve ser capaz de fazer isso.

Outras dicas

Deve ser possível através da criação de Stub para os métodos de extensão.

Métodos de extensão em Mono 2.4 e 3.5 RhinoMocks

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top