Por que estou recebendo uma exceção com a mensagem "Configuração inválida em um membro não virtual (substituível no VB) ..."?

Eu tenho um teste de unidade onde eu tenho que simular um método não virtual que retorna um tipo de 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);
    }
}

Então, eu tenho um objeto simulado deXmlCupboardAccess classe e estou tentando configurar simulação para este método no meu caso de teste, como mostrado abaixo

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

Mas esta linha lança exceção

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

Alguma sugestão de como contornar essa exceção?

questionAnswers(6)

yourAnswerToTheQuestion