Quando il debug del codice e leggere la riga con la creazione mockLessonplannerAFactory ottengo l'errore:argomenti del costruttore non può essere superato per l'interfaccia deride
Constructor arguments cannot be passed for interface mocks.
var mockSchoolclassCodeService = new Mock<ISchoolclassCodeService>();
var mockDateService = new Mock<IDateService>();
var mockLessonplannerAFactory = new Mock<ILessonplannerAFactory>(mockDateService.Object);
var mockLessonplannerBFactory = new Mock<ILessonplannerBFactory>(mockDateService.Object);
var service = new TimeTableService(mockUnitOfWork.Object, mockLessonplannerAFactory.Object, mockLessonplannerBFactory.Object, mockSchoolclassCodeService.Object);
mio TimeTableService accetta le istanze di solo un tipo di interfaccia. Ma mockLessonplannerAFactory e BFactory ... vogliono nel loro costruttore anche un IDateService passato.
Cosa c'è di sbagliato nel mio codice?
sì ho appena realizzato rimuovendo il passaggio del mockDateService.Object che tutto funziona bene. – Elisabeth
Questo non risolve il problema reale, come modificherebbe la configurazione di simulazione –
Il mockLessonPlanAFactory e mockLessonPlanBFactory non hanno bisogno dei parametri del costruttore. Qualsiasi metodo o proprietà che hanno che usano gli oggetti normalmente passati nel costruttore dell'implementazione concreta sono essi stessi metodi/proprietà fittizi e li si imposta per restituire un valore appropriato (altrimenti non si sta veramente prendendo in giro questi oggetti). Si impostano i metodi e le proprietà in base alle proprie esigenze. –