Я пытаюсь смоделировать метод Get () моего репозитория, чтобы он возвращал объект, чтобы имитировать обновление этого объекта, но моя установка не работает:
Вот мой тест:
[Test]
public void TestUploadDealSummaryReportUploadedExistingUpdatesSuccessfully()
{
var dealSummary = new DealSummary {FileName = "Test"};
_mockRepository.Setup(r => r.Get(x => x.FileName == dealSummary.FileName))
.Returns(new DealSummary {FileName = "Test"}); //not working for some reason...
var reportUploader = new ReportUploader(_mockUnitOfWork.Object, _mockRepository.Object);
reportUploader.UploadDealSummaryReport(dealSummary, "", "");
_mockRepository.Verify(r => r.Update(dealSummary));
_mockUnitOfWork.Verify(uow => uow.Save());
}
Вот метод, который тестируется:
public void UploadDealSummaryReport(DealSummary dealSummary, string uploadedBy, string comments)
{
dealSummary.UploadedBy = uploadedBy;
dealSummary.Comments = comments;
// method should be mocked to return a deal summary but returns null
var existingDealSummary = _repository.Get(x => x.FileName == dealSummary.FileName);
if (existingDealSummary == null)
_repository.Insert(dealSummary);
else
_repository.Update(dealSummary);
_unitOfWork.Save();
}
А вот ошибка, которую я получаю при запуске моего модульного теста:
Moq.MockException:
Ожидаемый вызов на макет хотя бы один раз, но так и не был выполнен: r => r.Update (.dealSummary)
Настройки не настроены.
Выполненные вызовы:
IRepository 1.Get(x => (x.FileName == value(FRSDashboard.Lib.Concrete.ReportUploader+<>c__DisplayClass0).dealSummary.FileName))
IRepository
1.Insert (FRSDashboard.Data.Entities.DealSummary)
в Moq.Mock.ThrowVerifyException (ожидается MethodCall, IEnumerable 1 setups, IEnumerable
1 actualCalls, выражение Expression, Times times, Int32 callCount)
в Moq.Mock.VerifyCalls (Interceptor targetInterceptor, ожидаемый MethodCall, выражение Expression, времена Times)
at Moq.Mock.Verify (Mock mock, Expression 1 expression, Times times, String failMessage)
at Moq.Mock
1.Verify (Expression`1 expression)
в FRSDashboard.Test.FRSDashboard.Lib.ReportUploaderTest.TestUploadDealSummaryReportUploadedExistingUpdatesSuccessfully
Посредством отладки я обнаружил, что x => x.FileName возвращает значение NULL, но даже если я сравниваю его с NULL, я все равно получаю NULL вместо Сводки сделки, которую я хочу вернуть. Есть идеи?