bar*_*iro 6 c# testing integration-testing httprequest asp.net-core
我有一个 ASP.NET Core 项目,使用以下方法:
public async Task<ActionResult<ResultDto>> StartReadFiles(
[ModelBinder(typeof(JsonModelBinder))] RequestDto request,
IFormFile file1,
IFormFile file2
)
Run Code Online (Sandbox Code Playgroud)
我推送方法后,进行性能测试失败,因为他在请求中发送了非常大的文件。
所以我DisableRequestSizeLimit
在方法中添加了:
[DisableRequestSizeLimit]
public async Task<ActionResult<ResultDto>> StartReadFiles(
[ModelBinder(typeof(JsonModelBinder))] RequestDto request,
IFormFile file1,
IFormFile file2
)
Run Code Online (Sandbox Code Playgroud)
现在,我想为这个错误编写一个测试。
我怎样才能用很大的身体来伪造请求?
使用RestSharp nuget 包编写此类测试非常方便。您的测试将向您的应用程序发出真正的 http 请求Asp.net core
:
var client = new RestClient("http://path/to/api/");
var request = new RestRequest("resourceurl", Method.POST);
byte[] fileByteArray = new byte[50*1024*1024]; // 50 MB
request.AddFileBytes("file1", fileByteArray, "file1Name");
// execute the request
IRestResponse response = client.Execute(request);
var content = response.Content; // raw content as string
Run Code Online (Sandbox Code Playgroud)
顺便说一句,默认情况下,asp.net core 应用程序的请求大小限制为28.6 MB。您可以通过(就像您所做的那样)禁用它[DisableRequestSizeLimit]
,然后您可以使用任何有效负载大小发出请求,但这通常是不受欢迎的行为。然后,最好使用[RequestSizeLimit(50_000_000)]
将默认限制更改为所需值。
归档时间: |
|
查看次数: |
8759 次 |
最近记录: |