public async Task RazorMapToDocumentRangeAsync_InvokesLanguageServer() { // Arrange var uri = new Uri("file:///some/folder/to/file.razor"); var response = new RazorMapToDocumentRangesResponse() { Ranges = new[] { new Range() { Start = new Position(1, 1), End = new Position(3, 3), } }, HostDocumentVersion = 1 }; var requestInvoker = new Mock <LSPRequestInvoker>(MockBehavior.Strict); requestInvoker .Setup(r => r.ReinvokeRequestOnServerAsync <RazorMapToDocumentRangesParams, RazorMapToDocumentRangesResponse>( It.IsAny <ITextBuffer>(), LanguageServerConstants.RazorMapToDocumentRangesEndpoint, RazorLSPConstants.RazorLanguageServerName, It.IsAny <Func <JToken, bool> >(), It.IsAny <RazorMapToDocumentRangesParams>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult(new ReinvocationResponse <RazorMapToDocumentRangesResponse>("TestLanguageClient", response))); var mappingProvider = new DefaultLSPDocumentMappingProvider(requestInvoker.Object, DocumentManager); var projectedRange = new Range() { Start = new Position(10, 10), End = new Position(15, 15) }; // Act var result = await mappingProvider.MapToDocumentRangesAsync(RazorLanguageKind.CSharp, uri, new[] { projectedRange }, CancellationToken.None).ConfigureAwait(false); // Assert Assert.NotNull(result); Assert.Equal(1, result.HostDocumentVersion); var actualRange = result.Ranges[0]; Assert.Equal(new Position(1, 1), actualRange.Start); Assert.Equal(new Position(3, 3), actualRange.End); }