Je souhaite utiliser les profils NServiceBus pour remplacer les classes concrètes utilisées dans l'injection de dépendance Spring.net pour les tests d'intégration.Dépendance des dépendances dans NServiceBus
Dans ma EndpointConfig
classe, j'ai un composant étant configuré:
NServiceBus.Configure.Instance.Configurer.ConfigureComponent<RealCommunicator>(ComponentCallModelEnum.None);
(Ce bit est OK!)
J'ai créé un nouveau profil:
public class StubThirdPartyProfile : NServiceBus.IProfile
{
}
Et un comportement classe pour l'implémenter:
public class StubThirdPartyBehaviour : IHandleProfile<StubThirdPartyProfile>
{
public void ProfileActivated()
{
Configure.Instance.Configurer.ConfigureComponent<StubCommunicator>(ComponentCallModelEnum.None);
}
}
Les deux StubCommunicator
et RealCommunicator
implémenter la même interface et j'espérais que le profil supprimerait l'ancienne dépendance et utiliser le StubCommunicator
à la place, mais ce n'est pas le cas. Y a-t-il un moyen de faire cela?
Lorsque la solution est exécutée, je reçois l'erreur suivante:
Spring.Objects.Factory.UnsatisfiedDependencyException:
Error creating object with name 'Namespace.CommandHandler' :
Unsatisfied dependency expressed through object property 'Communicator':
There are 2 objects of Type [Namespace.ICommunicator] for autowire by type,
when there should have been just 1 to be able to autowire property 'Communicator' of object
Nous utilisons le cadre Spring.net dans NServicebus configuré comme ceci:
Configure.With().SpringFrameworkBuilder()
.XmlSerializer().Log4Net()
.MsmqTransport()
.IsTransactional(true);
Merci Udi, c'est ce que j'ai fini par faire. À votre santé – user987506