public async Task GetDictionaryAsync()
        {
            Expression <Func <Customer, string> > selector = x => x.Name;
            var options = new QueryOptions <Customer>();

            var mock = new Mock <IService <Customer> >();

            mock.Setup(x => x.GetDictionaryAsync(It.IsAny <Expression <Func <Customer, string> > >(), It.IsAny <CancellationToken>()));
            mock.Setup(x => x.GetDictionaryAsync(It.IsAny <Expression <Func <Customer, string> > >(), It.IsAny <Expression <Func <Customer, string> > >(), It.IsAny <CancellationToken>()));
            mock.Setup(x => x.GetDictionaryAsync(It.IsAny <IQueryOptions <Customer> >(), It.IsAny <Expression <Func <Customer, string> > >(), It.IsAny <CancellationToken>()));
            mock.Setup(x => x.GetDictionaryAsync(It.IsAny <IQueryOptions <Customer> >(), It.IsAny <Expression <Func <Customer, string> > >(), It.IsAny <Expression <Func <Customer, string> > >(), It.IsAny <CancellationToken>()));

            var readOnlyService = new ReadOnlyServiceWrapper <Customer, int>(mock.Object);

            await readOnlyService.GetDictionaryAsync(selector);

            await readOnlyService.GetDictionaryAsync(selector, selector);

            await readOnlyService.GetDictionaryAsync(options, selector);

            await readOnlyService.GetDictionaryAsync(options, selector, selector);

            mock.Verify(x => x.GetDictionaryAsync(selector, default(CancellationToken)), Times.Once);
            mock.Verify(x => x.GetDictionaryAsync(selector, selector, default(CancellationToken)), Times.Once);
            mock.Verify(x => x.GetDictionaryAsync(options, selector, default(CancellationToken)), Times.Once);
            mock.Verify(x => x.GetDictionaryAsync(options, selector, selector, default(CancellationToken)), Times.Once);
        }