Я пытаюсь добавить Moq к своим тестам в MSTest, чтобы проверить части моего кода.
Код, который я хочу протестировать, но не работает, - это фрагмент кода, который должен фильтровать данные, полученные с помощьюобслуживание и пройти через это.Мой код настроен через шаблон MVP, и у меня есть следующие компоненты.(я тестирую своего докладчика)
Сервис -> этот сервис извлекает список объектов и помещает его в модель (я использую Mock (Moq) для возврата значений))
Модель -> Объект сущности с некоторыми общими свойствами и списком документов
Вид -> Интерфейс, который реализует мой usercontrol для общенияк ведущему.для этого представления также используется moq.
Presenter -> объект для извлечения модели из службы и назначения этой модели свойству представления.
В моем первом работающем сценарии я просто извлекаю модель из службы, и докладчик передает ее свойству представления.
//Setup AccountsPayableService Mock
_mockedDocumentService = new Mock<IDocumentService>();
DocumentModel<InvoiceDocumentRow> model = new DocumentModel<InvoiceDocumentRow>();
List<InvoiceDocumentRow> invoices = new List<InvoiceDocumentRow>();
InvoiceDocumentRow row = new InvoiceDocumentRow();
row.BillingMonth = DateTime.Now;
invoices.Add(row);
model.Documents = invoices;
_mockedDocumentService.Setup(service => service.GetInvoiceDocumentList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), _user)).Returns(model);
//Setup View Mock
_mockedView = new Mock<IInvoicesView>();
//Setup Presenter to be tested
_presenter = new FooPresenter(_mockedDocumentService.Object);
_presenter.SetView(_mockedView.Object);
//Act
//These events will make the presenter do the call to the service and assign this to the view property
_mockedView.Raise(view => view.Init += null, new EventArgs());
_mockedView.Raise(view => view.FirstLoad += null, new EventArgs());
//Assert
_mockedDocumentService.Verify(aps => aps.GetInvoiceDocumentList(from, changedTo, _user), Times.Once());
_mockedView.VerifySet(view => view.DocumentList = model);
Этот тест выполняется и работает отлично.
однако у меня также есть случай, когда докладчик должен отфильтровать некоторые результаты, полученные от службы, и назначить подмножество для представления.По какой-то причине я не могу заставить это работать.
По сути, это точно такой же тестовый код, за исключением того, что используется другой метод на презентере, который извлекает данные из службы, фильтрует их и затем передает их обратно.к представлению.
когда я делаю утверждение для свойства представления, как я делал раньше:
_mockedView.VerifySet(view => view.DocumentList.Documents = filteredModel.Documents);
я получаю ошибку:
System.ArgumentException: Expression is not a property setter invocation.
Чтоя делаю неправильно?