Quantcast
Channel: DevNet Questions
Viewing all articles
Browse latest Browse all 8901

Xperience unit test mocking of content query executor

$
0
0
An Xperience project I'm working on contains the following interface:public interface IContentRepository { Task@IEnumerable@T@@ GetWebPageAsync@T@( ContentItemQueryBuilder builder, Cancellationtoken cancellationToken ) where T : new(); } The implementation of this is:public class ContentRepository : IContentRepository { private readonly IContentQueryExecutor _contentQueryExecutor; private readonly IWebPageQueryResultMapper _webPageQueryResultMapper; private readonly IWebsiteChannelContext _websiteChannelContext; public ContentRepository( IContentQueryExecutor contentQueryExecutor, IWebPageQueryResultMapper webPageQueryResultMapper, IWebsiteChannelContext websiteChannelContext, ) { _contentQueryExecutor = contentQueryExecutor; _webPageQueryResultMapper = webPageQueryResultMapper; _websiteChannelContext = websiteChannelContext; } public async Task@IEnumerable@T@@ GetWebPageAsync@T@( ContentItemQueryBuilder builder, CancellationToken cancellationToken ) where T : new() { var queryOptions = new ContentQueryExecutionOptions() { ForPreview = _websiteChannelContext.IsPreview }; return await _contentQueryExecutor.GetWebPageResult( builder: builder, resultSelector: _webPageQueryResultMapper.Map@T@, options: queryOptions, cancellationToken: cancellationToken ); } } The idea behind this repository is that you can just do a single call to get web pages, content and such. For testing the method above I need to mock the _contentQueryExecutor.GetWebPageResult call to return an IEnumerable of the given page type. However nothing really seems to work. In my test file for example I do the following:var homePage = new HomePage { SystemFields = new WebPageFields { WebPageItemID = 1 } }; _webPageQueryResultMapper .Map@HomePage@(Arg.Any@IWebPageContentQueryDataContainer@()) .Returns(homePage); _contentQueryExecutor .GetWebPageResult( builder: Arg.Any@ContentItemQueryBuilder@(), resultSelector: _webPageQueryResultMapper.Map@HomePage@, options: Arg.Any@ContentQueryExecutionOptions@(), cancellationToken: Arg.Any@CancellationToken@() ) .Returns([homePage]); But the result always seems to be null from the _contentQueryExecutor. The _webPageQueryResultMapper returns the correct value however. I'm using NSubstitute and xUnit for my unit tests.

Viewing all articles
Browse latest Browse all 8901

Trending Articles