Pourquoi suis-je une Exception avec le message “Invalid configuration sur un non-virtuel (substituables en VB) membre...”?

J'ai une unité de test où je dois simuler une non-méthode virtuelle qui renvoie un type bool

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);
    }
}

J'ai donc un objet fantaisie de XmlCupboardAccess classe et je suis en train de configuration se moquer de cette méthode dans mon cas de test comme indiqué ci-dessous

[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
}

Mais cette ligne throws exception

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

Toute suggestion comment obtenir autour de cette exception?

  • Ce qui, dans votre test dépend XmlCupboardAccess?
  • sa simple.. vous devez marquer virtual. Moq ne peut pas se moquer d'un type de béton qu'il ne peut pas remplacer.
InformationsquelleAutor Rahul Lodha | 2014-02-14