Coder Social home page Coder Social logo

fs-http-client-mock's Introduction

FsHttpClientMock

.NET

A really simple http client mock.

Examples

Match by simple url

[Fact]
public async void match_by_simple_url()
{
    var builder = new MockedHttpClientBuilder();
    builder
        .WhenGet("/Test")
        .Respond(HttpStatusCode.OK);s
    using var httpClient = builder.Build("http://localhost:1122");
    var response = await httpClient.GetAsync("http://localhost:1122/test");
    Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}

Return some response

[Fact]
public async void return_some_response()
{
    var builder = new MockedHttpClientBuilder();
    builder
        .WhenGet("/Test")
        .Respond(HttpStatusCode.OK, new People { Name = "John Doe"});

    using var httpClient = builder.Build("http://localhost:1122");
    var response = await httpClient.GetAsync("http://localhost:1122/test");
    Assert.Equal(HttpStatusCode.OK, response.StatusCode);
    var people = await response.Content.ReadFromJsonAsync<People>();
    Assert.Equal("John Doe", people?.Name);
}

Capture request being sent

[Fact]
public async void capture_request_being_sent()
{
    var builder = new MockedHttpClientBuilder();
    var capture = builder.WhenGet("/test").Respond(HttpStatusCode.OK).Capture();
    using var httpClient = builder.Build("http://localhost:1122");
    // no request being sent yet
    Assert.Null(capture());

    // when send the request
    var response = await httpClient.GetAsync("http://localhost:1122/test");

    Assert.Equal(HttpStatusCode.OK, response.StatusCode);
    // should get the request by retriever
    var requestCapture = capture();
    Assert.NotNull(requestCapture);
    Assert.Equal(HttpMethod.Get, requestCapture.HttpMethod);
    Assert.Equal("http://localhost:1122/test", requestCapture.RequestUri.ToString());
}

Hamcrest Style Matchers

  • Matchers.Regex
[Fact]
public async void hamcrest_style_matchers()
{
    var builder = new MockedHttpClientBuilder();
    builder
        .WhenGet(UrlMatchers.Regex(@"/(staff)|(user)s"))
        .Respond(HttpStatusCode.InternalServerError);

    using var httpClient = builder.Build("http://localhost:1122");
    var response = await httpClient.GetAsync("http://localhost:1122/users");

    Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);        
}
  • Matchers.WildCard
builder
    .WhenGet(Matchers.Wildcard(@"/staffs/?"))
    .Respond(HttpStatusCode.Unauthorized);
  • Matchers.Is
builder
     .WhenGet(Matchers.Is("/staffs"))
     .Respond(HttpStatusCode.OK);

fs-http-client-mock's People

Contributors

cuiyansong avatar forki avatar lxconan avatar tw-service avatar xiaoyvr avatar yingrui avatar zhengquan avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.