Como definir Esperar um método de Extensão em Rhino Zomba 3.6
-
14-11-2019 - |
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?
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.