NET 4 contribui para uma melhor teste de unidade / zombeteiros devido à capacidade de remendo macaco?

StackOverflow https://stackoverflow.com/questions/1855242

Pergunta

Considere o seguinte sobre a Iron Python implementação-vindo.

Em teoria, permitiria macaco patching certo? Bom ou ruim, não importa. alguém dada outra pessoa código não-testável (pelo menos facilmente) a palavra-chave dinâmica permitiria macaco patching faria isso não? Isto tem um grande potencial para C # e VB se eu estou lendo isso direito.

O que são os pensamentos sobre isso?

Foi útil?

Solução

O suporte tipo dinâmico em .Net 4 não realmente dar-lhe suporte full-remendar macaco em todo o sistema de tipos CLR. Ele dar-lhe uma outra maneira de objetos fictícios, mas para ser franco a forma atual é muito boa (veja moq: http://code.google.com/p/moq/ )

Com tipos dinâmicos, você perde intellisense, portanto, um argumento poderia ser feito que não é aconselhável dinâmico para zombar.

A interceptação estilo IronPython lhe permitirá encerrar um objeto existente com seu próprio comportamento desejado, mas não permitirá que você diga ao quadro, para corrigir todos os Foo objetos (a partir deste ponto em diante), de modo método Bar chamará Bar2 em vez de Bar.

Tenha em mente, com IronRuby e IronPython existem 2 sistemas do tipo separados em jogo, há o sistema de tipos CLR subjacente e o sistema de tipo IronRuby / IronPython, quando eles chamam para código C # lá é mobilizar acontecendo. Assim, mesmo que IronRuby / IronPython pode corretamente macaco corrigir seu próprio sistema do tipo, eles não podem usar o mesmo mecanismo para corrigir o sistema tipo CLRs.

Se você quiser macaco patching você precisa interceptação adequada e que é duro : interceptação dinâmico de chamadas em .NET

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