public static async Task Use_Scopes_To_Change_And_Then_Restore_Behavior()
        {
            // Arrange
            var builder = new HttpRequestInterceptionBuilder()
                          .ForHost("public.je-apis.com")
                          .WithJsonContent(new { value = 1 });

            var options = new HttpClientInterceptorOptions()
                          .Register(builder);

            string json1;
            string json2;
            string json3;

            // Act
            using (var client = options.CreateHttpClient())
            {
                json1 = await client.GetStringAsync("http://public.je-apis.com");

                using (options.BeginScope())
                {
                    options.Register(builder.WithJsonContent(new { value = 2 }));

                    json2 = await client.GetStringAsync("http://public.je-apis.com");
                }

                json3 = await client.GetStringAsync("http://public.je-apis.com");
            }

            // Assert
            json1.ShouldNotBe(json2);
            json1.ShouldBe(json3);
        }
        public static void WithJsonContent_Validates_Parameters()
        {
            // Arrange
            var    builder = new HttpRequestInterceptionBuilder();
            object content = null;

            // Act and Assert
            Assert.Throws <ArgumentNullException>("builder", () => (null as HttpRequestInterceptionBuilder).WithJsonContent(content));
            Assert.Throws <ArgumentNullException>("content", () => builder.WithJsonContent(content));
        }