Utilizzando Moq Per Testare Una Classe Astratta

Sto cercando di eseguire un test di unità su un metodo in una classe astratta. Ho condensato il codice riportato di seguito:

Classe Astratta:

public abstract class TestAb
{
    public void Print()
    {
        Console.WriteLine("method has been called");
    }
}

Test:

[Test]
void Test()
{
    var mock = new Mock<TestAb>();
    mock.CallBase = true;
    var ta = mock.Object;
    ta.Print();
    mock.Verify(m => m.Print());
}

Messaggio:

Method is not public

Che cosa sto facendo di sbagliato? Il mio obiettivo è quello di testare i metodi all’interno della classe astratta che utilizza lui Moq quadro.

InformationsquelleAutor Guerrilla | 2013-12-15

 

2 Replies
  1. 14

    Il messaggio è perché il vostro metodo di Prova non è pubblico. Metodi di prova devono essere pubblici. Anche dopo aver effettuato la prova metodo di pubblico che non riescono, come si può solo verificare abstract/metodi virtuali. Quindi nel tuo caso si dovrà fare il metodo virtuale dal momento che si dispone di implementazione.

    • Grazie ora funziona
  2. 4

    Se si desidera mock metodi in una classe astratta come questo, allora avete bisogno di rendere virtuale, o astratta.

Lascia un commento