Kiedy debugowania kodu i przeczytać wiersz z mockLessonplannerAFactory stworzenia pojawia się błąd:argumentów konstruktora nie mogą być przekazywane do interfejsu kpi
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);
Moja TimeTableService akceptuje instancji tylko typu interfejsu. Ale mockLessonplannerAFactory i BFactory ... chcą w swoim konstruktorze również przekazać IDateService.
Co jest nie tak z moim kodem?
Tak, po prostu zdałem sobie sprawę, usuwając przekazanie mockDateService.Object, że wszystko działa poprawnie. – Elisabeth
To nie rozwiązuje prawdziwego problemu, jak zmodyfikowałbyś fałszywą konfigurację? –
Obiekty mockLessonPlanAFactory i mockLessonPlanBFactory nie potrzebują parametrów konstruktora. Każda metoda lub własność, którą mają, używają obiektów normalnie przekazywanych w konstruktorze konkretnej implementacji, są same w sobie metodami/właściwościami i ustawiasz je tak, aby zwracały odpowiednią wartość (w przeciwnym razie nie będziesz naprawdę kpił z tych obiektów). Konfigurujesz metody i właściwości, gdy ich potrzebujesz. –