• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

markvincze/Stubbery: Library for creating Api stubs in .NET. https://markvincze. ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

markvincze/Stubbery

开源软件地址:

https://github.com/markvincze/Stubbery

开源编程语言:

C# 97.6%

开源软件介绍:

Stubbery

Simple library for creating and running Api stubs in .NET.

Build status Latest version Coverage Status

Introduction

In many situations it comes handy if we're able to start a simple service that responds on certain routes with preconfigured static responses.

This is particularly important in integration testing, when we might want to replace some of our dependencies with a stub that can reliably provide the expected responses.

Stubbery is a library with which we can simply configure and start a web server that responds on particular routes with the configured results. It targets nestandard2.0, so it can be used with .NET Core 2, and the full .NET Framework up from .NET 4.6.1.

How to use

The central class of the library is ApiStub. In order to start a new server we have to create an instance of ApiStub, set up some routes using the methods Get, Post, Put and Delete, and start the server by calling Start.

The server listens on localhost on a randomly picked free port. The full address is returned by the Address property.

After usage the server should be stopped to free up the TCP port. This can be done by calling Dispose (or use the stub in a using block).

Basic usage

using (var stub = new ApiStub())
{
    stub.Get(
        "/testget",
        (req, args) => "testresponse");

    stub.Start();

    var result = await httpClient.GetAsync(new UriBuilder(new Uri(stub.Address)) { Path = "/testget" }.Uri);

    // resultString will contain "testresponse"
    var resultString = await result.Content.ReadAsStringAsync();
}

Accessing the request parameters

Parameters of the request can be accessed through the second argument of the lambda setting up the response. The following code sample shows how the route and the query string parameters can be accessed.

using (var stub = new ApiStub())
{
    stub.Get(
        "/testget/{arg1}",
        (req, args) => $"testresponse arg1: {args.Route.arg1} queryArg1: {args.Query.queryArg1}");

    stub.Start();

    var result = await httpClient.GetAsync(
        new UriBuilder(new Uri(stub.Address)) { Path = "/testget/orange", Query = "?queryArg1=melon" }.Uri);

    // resultString will contain "testresponse arg1: orange queryArg1: melon"
    var resultString = await result.Content.ReadAsStringAsync();
}

The following example shows how the HTTP body can be accessed.

using (var stub = new ApiStub())
{
    stub.Post(
        "/testpost",
        (req, args) => $"testresponse body: {args.Body.ReadAsString()}");

    stub.Start();

    var result = await httpClient.PostAsync(
        new UriBuilder(new Uri(stub.Address)) { Path = "/testpost" }.Uri,
        new StringContent("orange"));

    // resultString will contain "testresponse body: orange"
    var resultString = await result.Content.ReadAsStringAsync();
}

Other verbs

If we want to use a different HTTP verb, the Request method can be used.

using (var stub = new ApiStub())
{
    stub.Request(HttpMethod.Options)
        .IfRoute("/testoptions")
        .Response((req, args) => "testresponse");

    stub.Start();

    var result = await httpClient.SendAsync(
        new HttpRequestMessage
        {
            RequestUri = new UriBuilder(new Uri(stub.Address)) { Path = "/testoptions" }.Uri,
            Method = HttpMethod.Options
        });

    // resultString will contain "testresponse"
    var resultString = await result.Content.ReadAsStringAsync();
}

More details can be found in the Documentation.




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Stubbery发布时间:2022-06-13
下一篇:
sirbrad/comcom: Github Powered Comments using Issue API发布时间:2022-06-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap