CSharp · Console
using System;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using FluentAssertions;
using Flurl;
using Flurl.Http;
using Flurl.Http.Testing;
public class Program
{
static async Task Main(string[] args)
{
await TestGetData();
}
public static async Task TestGetData()
{
using (var httpTest = new HttpTest())
{
httpTest.RespondWith("json result", 200);
var result = await GetData();
httpTest.ShouldHaveExactCall("https://flurltestservice.azurewebsites.net/v2/users?AccessToken=token&ResultsCounts=20")
.WithVerb(HttpMethod.Get)
.Times(1);
result
.Should()
.Be("json result");
Console.WriteLine("Test completed.");
}
}
private static async Task<string> GetData()
{
var result = await "https://flurltestservice.azurewebsites.net/"
.AppendPathSegment("v2")
.AppendPathSegment("users")
.SetQueryParams(new
{
AccessToken = "token",
ResultsCounts = 20,
q = "Tomasz Żyrek"
})
.SetFragment("Results")
.GetAsync()
.ReceiveString();
return result;
}
}
public static class HttpCallAssertionExtensions
{
public static HttpCallAssertion ShouldHaveExactCall(this HttpTest test, string exactUrl)
{
test.CallLog.First().FlurlRequest.Url.ToString().Should().Be(exactUrl);
return new HttpCallAssertion(test.CallLog);
}
}