내 프로젝트에이 코드가 있습니다. moq를 사용하여 문서 세션을 moq하고 반환 값을 설정하려면 어떻게해야합니까? ravendb에 대해이 쿼리를 moq하려면 어떻게해야합니까?
_session.Query<IPageModel, PageByUrl>()
.Customize(x => x.WaitForNonStaleResultsAsOfLastWrite())
.FirstOrDefault(x => x.Metadata.Url == virtualUrl);
이
내가이 예외를 throw 을var session = new Mock<IDocumentSession>();
var pageModel = new DummyModel();
session.Setup(x => x.Query<IPageModel, PageByUrl>()
.Customize(y => y.WaitForNonStaleResultsAsOfLastWrite())
.FirstOrDefault(y => y.Metadata.Url == path)).Returns(pageModel);
물어 내가
System.NotSupportedException : Expression references a method that does not belong to the mocked object: x => x.Query<IPageModel,PageByUrl>().Customize(y => y.WaitForNonStaleResultsAsOfLastWrite()).FirstOrDefault<IPageModel>(y => y.Metadata.Url == .path)
at Moq.Mock.<>c__DisplayClass1c`2.<Setup>b__1b()
at Moq.Mock.Setup(Mock mock, Expression`1 expression, Func`1 condition)
at Moq.Mock`1.Setup(Expression`1 expression)
at BrickPile.Tests.Web.Routing.PathResolverTests.Home_Page_With_Default_Action(String path) in PathResolverTests.cs: line 26
필자가 제안한대로 embeddabledocumentstore를 사용했으나 훌륭하게 작동하지만 내 단위 테스트는 이제 많은 코드를 테스트합니다. 감사! – Marcus
@Marcus Moq를 사용할 때 테스트되는 더 많은 코드에 관한 요점은 어디입니까? 이 정의를 통해 Moq는 또한 테스트 된 추가 코드입니다 – ccellar