diff --git a/src/WireMock.Net/Settings/IProxyAndRecordSettings.cs b/src/WireMock.Net/Settings/IProxyAndRecordSettings.cs
index d34d73d2..2426cf2c 100644
--- a/src/WireMock.Net/Settings/IProxyAndRecordSettings.cs
+++ b/src/WireMock.Net/Settings/IProxyAndRecordSettings.cs
@@ -25,7 +25,7 @@ namespace WireMock.Settings
string SaveMappingForStatusCodePattern { get; set; }
///
- /// Save the mapping for each request/response also to a file. (Note that SaveMapping must also be set to true.)
+ /// Save the mapping for each request/response to a .json mapping file.
///
bool SaveMappingToFile { get; set; }
diff --git a/test/WireMock.Net.Tests/WireMockServer.Proxy.cs b/test/WireMock.Net.Tests/WireMockServer.Proxy.cs
index a07bac25..a0bc937e 100644
--- a/test/WireMock.Net.Tests/WireMockServer.Proxy.cs
+++ b/test/WireMock.Net.Tests/WireMockServer.Proxy.cs
@@ -6,8 +6,10 @@ using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using FluentAssertions;
+using Moq;
using NFluent;
using WireMock.Admin.Mappings;
+using WireMock.Handlers;
using WireMock.Matchers.Request;
using WireMock.RequestBuilders;
using WireMock.ResponseBuilders;
@@ -51,6 +53,69 @@ namespace WireMock.Net.Tests
Check.That(server.LogEntries).HasSize(1);
}
+ [Fact]
+ public async Task WireMockServer_Proxy_With_SaveMapping_Is_True_And_SaveMappingToFile_Is_False_Should_AddInternalMappingOnly()
+ {
+ // Assign
+ var settings = new WireMockServerSettings
+ {
+ ProxyAndRecordSettings = new ProxyAndRecordSettings
+ {
+ Url = "http://www.google.com",
+ SaveMapping = true,
+ SaveMappingToFile = false
+ }
+ };
+ var server = WireMockServer.Start(settings);
+
+ // Act
+ var requestMessage = new HttpRequestMessage
+ {
+ Method = HttpMethod.Get,
+ RequestUri = new Uri(server.Urls[0])
+ };
+ var httpClientHandler = new HttpClientHandler { AllowAutoRedirect = false };
+ await new HttpClient(httpClientHandler).SendAsync(requestMessage);
+
+ // Assert
+ server.Mappings.Should().HaveCount(2);
+ }
+
+ [Fact]
+ public async Task WireMockServer_Proxy_With_SaveMapping_Is_False_And_SaveMappingToFile_Is_True_ShouldSaveMappingToFile()
+ {
+ // Assign
+ var fileSystemHandlerMock = new Mock();
+ fileSystemHandlerMock.Setup(f => f.GetMappingFolder()).Returns("m");
+
+ var settings = new WireMockServerSettings
+ {
+ ProxyAndRecordSettings = new ProxyAndRecordSettings
+ {
+ Url = "http://www.google.com",
+ SaveMapping = false,
+ SaveMappingToFile = true
+ },
+ FileSystemHandler = fileSystemHandlerMock.Object
+ };
+ var server = WireMockServer.Start(settings);
+
+ // Act
+ var requestMessage = new HttpRequestMessage
+ {
+ Method = HttpMethod.Get,
+ RequestUri = new Uri(server.Urls[0])
+ };
+ var httpClientHandler = new HttpClientHandler { AllowAutoRedirect = false };
+ await new HttpClient(httpClientHandler).SendAsync(requestMessage);
+
+ // Assert
+ server.Mappings.Should().HaveCount(1);
+
+ // Verify
+ fileSystemHandlerMock.Verify(f => f.WriteMappingFile(It.IsAny(), It.IsAny()), Times.Once);
+ }
+
[Fact]
public async Task WireMockServer_Proxy_Should_log_proxied_requests()
{