Moq SetUp.Zurückgeben funktioniert nicht für repository-mock
Ich versuche zu verspotten, meine Repositorys Get () - Methode ein Objekt zurückgeben, um gefälschte ein update auf das Objekt, aber mein setup nicht funktioniert:
Hier ist mein Test:
[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());
}
Hier ist die Methode, die getestet wird:
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();
}
Und hier ist die Fehlermeldung, die ich bekomme, wenn ich meine unit-test:
Moq.MockException :
Erwartet den Aufruf auf den mock-mindestens einmal, wurde aber nie durchgeführt: r => r.Update(.dealSummary)
Keine setups konfiguriert.Durchgeführt Aufrufe:
IRepository1.Get(x => (x.FileName == value(FRSDashboard.Lib.Concrete.ReportUploader+<>c__DisplayClass0).dealSummary.FileName))
1.Insert(FRSDashboard.Daten.Personen.DealSummary)
IRepository
bei Moq.Mock.ThrowVerifyException(MethodCall erwartet, IEnumerable1 setups, IEnumerable
1 actualCalls, Ausdruck, Ausdruck, Zeiten, Int32 callCount)
bei Moq.Mock.VerifyCalls(Interceptor targetInterceptor, MethodCall erwartet, Ausdruck, Ausdruck, Zeiten,)
bei Moq.Mock.Verify(Mock mock, Ausdruck1 expression, Times times, String failMessage)
1.Überprüfen(Ausdruck`1 Ausdruck)
at Moq.Mock
bei FRSDashboard.Test.FRSDashboard.Lib.ReportUploaderTest.TestUploadDealSummaryReportUploadedexistingupdatessuccessfully
Durch Debuggen habe ich festgestellt, dass die x => x.Mit dem Namen wird null zurückgeben, aber selbst wenn ich es im Vergleich zu null-ich bekomme immer noch eine null statt dem Angebot Zusammenfassung ich möchte zurückgegeben. Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, dein setup ist nicht passend den Anruf, den Sie machen, weil Sie zwei unterschiedliche anonyme Lambda-Ausdrücke. Können Sie was braucht wie
Könnte man überprüfen, indem ein breakpoint in der Get () - Methode des repository und sehen, wenn es getroffen wird. Es sollte nicht sein.
_mockRepository.Setup(r => r.Get(It.IsAny<Expression<Func<DealSummary, bool>>>())).Returns(new DealSummary { FileName = "Test" });
den test bestanden.