Warum erhalte ich eine Exception mit der Meldung "Ungültige Konfiguration auf einem nicht virtuellen (überschreibbaren in VB) Mitglied ..."?

Habe ich einen unit test, wo ich simulieren Sie eine nicht-virtuelle Methode, liefert einen bool-Typ

public class XmlCupboardAccess
{
    public bool IsDataEntityInXmlCupboard(string dataId,
                                          out string nameInCupboard,
                                          out string refTypeInCupboard,
                                          string nameTemplate = null)
    {
        return IsDataEntityInXmlCupboard(_theDb, dataId, out nameInCupboard, out refTypeInCupboard, nameTemplate);
    }
}

Also ich habe ein mock-Objekt der XmlCupboardAccess Klasse und ich bin versucht, setup-mock für diese Methode in meinem test-Fall, wie unten gezeigt

[TestMethod]
Public void Test()
{
    private string temp1;
    private string temp2;
    private Mock<XmlCupboardAccess> _xmlCupboardAccess = new Mock<XmlCupboardAccess>();
    _xmlCupboardAccess.Setup(x => x.IsDataEntityInXmlCupboard(It.IsAny<string>(), out temp1, out temp2, It.IsAny<string>())).Returns(false); 
    //exception is thrown by this line of code
}

Aber diese Zeile wirft Ausnahme

Invalid setup on a non-virtual (overridable in VB) member: 
x => x.IsDataEntityInXmlCupboard(It.IsAny<String>(), .temp1, .temp2, 
It.IsAny<String>())

Jede Anregung, wie man um diese Ausnahme?

Kommentar zu dem Problem
Was in deinem test hängt von XmlCupboardAccess? Kommentarautor: Preston Guillot
Ihr einfach.. Sie brauchen, um Sie zu markieren, virtual. Moq kann nicht verspotten einen konkreten Typ, kann es nicht außer Kraft gesetzt. Kommentarautor: Simon Whitehead

InformationsquelleAutor der Frage Rahul Lodha | 2014-02-14

Schreibe einen Kommentar