Je dois tester une méthode (runMethod()) qui utilise une méthode d'une classe abstraite inhérente pour créer un booléen. La méthode de la classe abstraite utilise des documents Xml et des nœuds pour récupérer des informations. Le code ressemble un peu à ceci (et c'est extrêmement simplifié, mais c'est l'énoncé de mon problème)
namespace AbstractTestExample
{
public abstract class AbstractExample
{
public string propertyValues;
protected XmlNode propertyValuesXML;
protected string getProperty(string propertyName)
{
XmlDocument doc = new XmlDocument();
doc.Load(new System.IO.StringReader(propertyValues));
propertyValuesXML= doc.FirstChild;
XmlNode node = propertyValuesXML.SelectSingleNode(String.Format("property[name='{0}']/value", propertyName));
return node.InnerText;
}
}
public class AbstractInheret : AbstractExample
{
public void runMethod()
{
bool addIfContains = (getProperty("AddIfContains") == null || getProperty("AddIfContains") == "True");
//Do something with boolean
}
}
}
Le code veut donc obtenir une propriété d'un document Xml créé et l'utilise pour transformer le résultat en un booléen. Ma question est la suivante : quelle est la meilleure solution pour m'assurer que j'ai le contrôle sur le comportement du résultat booléen ? J'utilise Moq pour un éventuel mocking.
Je sais que cet exemple de code est probablement un peu flou, mais c'est le meilleur que j'ai pu montrer. J'espère que vous pourrez m'aider.
EDIT : Ce dont j'ai besoin, en fait, c'est.. :
J'ai besoin de pouvoir contrôler getProperty() pendant que je teste la classe AbstractInheret.