Parametri Moqautomocker e costruttori primitivi
-
12-11-2019 - |
Domanda
Sono un appassionato utente del Moqautomocker StructureMap, a volte, tuttavia, ci imbattiamo in un nostro "vecchio amico". Assumi un "validatore" di classe
public class Validator
{
private string _connectionString;
private IEventMachine _eventMachine;
public Validator(string connectionString, IEventMachine eventMachine)
{
_connectionString = connectionString;
_eventMachine = eventMachine;
}
}
La classe sopra non ha importanza, in effetti, probabilmente solleverà alcune sopracciglia, lo sto solo facendo per questo post, poiché non potrei pensare a un esempio migliore dalla punta del naso. Il punto è che contiene un mix di dati primitivi ( connessioni) e interfacce (Eventmachine) - Durante i test unitari, in genere ho impostato le mie aspettative, come ad esempio:
[TestMethod]
public void Validate_WhenCalled_PublishesEnterEvent()
{
// Arrange
var Instance = new MoqAutoMocker<Validator>();
var eventMachineMock = Mock.Get(AutoMock.Get<IEventMachine>());
// Act
Instance.Validate();
// Assert
eventMachineMock.Verify(m => m.Publish( It.IsAny<string>(), Times.Once());
}
Quindi, la domanda è: quanto sopra non funzionerà, perché Moqautomocker non riesce ad accettare l'argomento connessionstring, in quanto non riesce a trovare un'interfaccia per esso (o qualsiasi altro primitivo per quella materia). La mia domanda è semplicemente: c'è un modo per dire a Moqautomocker quale dovrebbe essere questo valore?
In anticipo, grazie per la lettura.
Soluzione
No, non credo che ci sia un modo: è una limitazione dell'automocker.
Tendiamo a evitare i parametri del costruttore primitivo a favore degli oggetti delle impostazioni (vedi Come gestiamo la configurazione dell'applicazione)