J'essaie d'utiliser Castle Windsor avec MS Test. La classe de test semble seulement utiliser le constructeur par défaut. Comment configurer Castle pour résoudre le service dans le constructeur?Comment passer la dépendance à l'objet avec Castle Windsor et MS Test?
Voici les constructeurs de la classe de test:
private readonly IWebBrowser _browser;
public DepressionSummaryTests()
{
}
public DepressionSummaryTests(IWebBrowser browser)
{
_browser = browser;
}
Mon composant dans la configuration de l'application ressemble à ceci:
<castle>
<components>
<component id="browser"
service="ConversationSummary.IWebBrowser, ConversationSummary"
type="ConversationSummary.Browser" />
</components>
</castle>
Voici mon conteneur d'application:
public class ApplicationContainer : WindsorContainer
{
private static IWindsorContainer container;
static ApplicationContainer()
{
container = new WindsorContainer(new XmlInterpreter(new ConfigResource("castle")));
}
private static IWindsorContainer Container
{
get { return container; }
}
public static IWebBrowser Browser
{
get { return (IWebBrowser) Container.Resolve("browser"); }
}
}
MS test nécessite le constructeur par défaut. Qu'est-ce que je rate?
Merci!
100% d'accord. Exiger un conteneur DI dans votre unité teste dans oxymoron comme vous devez être capable d'instancier et de se moquer des classes individuelles. –
Je suis d'accord généralement. Mais dans ce cas, le service est un objet de navigateur utilisé pour le test de l'interface utilisateur. Ce couplage est inévitable. – Nick