如何编写一个通用的restsharp方法(单独的)来设置客户端,发送任何类型的请求,并在框架开发中返回通用响应



我是C#的新手,我正在用Specflow、xunit和restsharp编写一个测试框架。我的步骤如下

When I make a <ServiceName><Method> request
Then  I should get a success 200

正如你所看到的,第二个步骤是公共步骤,可以在may特性中使用,因此我将其写在公共步骤类中。这里的挑战是如何为第一步和第二步编写一个通用方法。第一步是发送对任何服务的请求的通用方法,第二步是接受来自任何服务的响应。

如果我只写一个方法,我的代码就像这个

RestClient restClient = new RestClient();
RestRequest restRequest = new RestRequest(getUrl);
RestResponse<Root> result =  client.ExecuteGet<Root>(request);

Debug.WriteLine($"response status code-{result.StatusCode}");
Debug.WriteLine($"response status code-{result.Content}");

当我在写一个框架的时候,我想把客户端设置在一个类中,并在任何地方使用它,请求和响应也是如此。此外,我无法分享测试步骤的上下文。我希望任何功能都可以访问解决方案中的任何步骤。请引导。

为内部所有请求和下面的泛型方法创建一个类。

public class ApiReq
{
public ApiReq(string baseUrl)
{
_restClient= new RestClient();
_restClient.BaseUrl = new Uri(baseUrl);
_restClient.Timeout = 120000; //120 seconds
}
private T ExecuteMyRequest<T>(RestRequest request) where T : new()
{
//....

var response = _restClient.Execute<T>(request);
return response.Data;
}
}

在你喜欢的地方使用它;

var baseUrl="http://localhost:3000";
var request = new RestRequest("posts/{postid}", Method.Get);
return new ApiReq(baseUrl).ExecuteMyRequest<YourClass>(request);

最新更新