J'ai une classe qui a une propriété que j'ai besoin de talonner. Je ne peux pas le passer en tant que partie du constructeur parce que l'objet qui le construit ne connaît pas les paramètres du constructeur.Rhino Mocks, Interfaces et propriétés
Lors de l'exécution de tests unitaires, je souhaite que la propriété soit créée en tant que stub.
C'est ce que je l'ai essayé, mais ça ne fonctionne pas:
private DeviceMediator deviceMediator;
private IDeviceControlForm deviceControlForm;
private IDataAccess data;
private ICallMonitor callMonitor;
// Use TestInitialize to run code before running each test
[TestInitialize()]
public void MyTestInitialize()
{
// This line works fine
deviceControlForm = MockRepository.GenerateStub<IDeviceControlForm>();
// This line works fine
data = MockRepository.GenerateStub<IDataAccess>();
// This has to be an ICallMonitor. If I try to make it a
// CallMonitor then it fails.
callMonitor = (CallMonitor)
MockRepository.GenerateStub<ICallMonitor>();
// This line does not compile. Because it wants to
// return a CallMonitor not an ICallMonitor.
Expect.Call(new CallMonitor(null)).Return(callMonitor);
// This is the class that has the CallMonitor (called callMonitor).
deviceMediator = new DeviceMediator(deviceControlForm, data);
}
Y at-il de toute façon d'attraper l'appel du constructeur à CallMonitor et en faire soit en réalité un bout?
Dans le cas où il est pertinent, voici le code lié à DeviceMediator:
private IDeviceControlForm form;
private readonly IDataAccess data;
public ICallMonitor CallMonitor { get; set; }
public DeviceMediator(IDeviceControlForm form, IDataAccess data)
{
this.form = form;
this.data = data;
CallMonitor = new CallMonitor(OnIncomingCall);
}
Merci à l'avance pour toute aide.
Je pense que c'est la voie à suivre. (Je peux également déplacer le constructeur callMonitor dans une autre méthode.) – Vaccano