Pergunta

Eu estou usando Moq para testes de unidade. É pedir para MOQ para o trabalho, propriedades e metodos tem que ser marcado como virtual. Às vezes eu passar em dados e valores de propriedade situado no construtores. Não há uma regra que você não deve definir as propriedades virtuais em constrcutors uma vez que pode causar um comportamento inesperado (se a classe foi herdada de uma classe base), ou será que é seguro fazê-lo?

Foi útil?

Solução

É, de fato um problema, e Visual Studio análise explicitamente verifica esta .

Uma solução simples para isso é para mover o trabalho para um membro interno não-virtual, e depois ter a chamada de método virtual que, assim como o construtor. Algo parecido com isto:

public class MyClass
{
    public MyClass()
    {
        this.DoStuffInternal();
    }

    public virtual void DoStuff()
    {
        this.DoStuffInternal();
    }

    internal void DoStuffInternal()
    {
        // Interesting stuff happens here
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top