Базовый метод тестирования ASP.NET с DisableRequestSizeLimit - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть проект ASP.NET Core с этим методом:

public async Task<ActionResult<ResultDto>> StartReadFiles(
    [ModelBinder(typeof(JsonModelBinder))] RequestDto request,
    IFormFile file1,
    IFormFile file2
)

После того, как я нажал метод, тест производительности не прошел, потому что он отправляет очень большие файлы в запросе.

Итак, я добавил DisableRequestSizeLimit к методу:

[DisableRequestSizeLimit]
public async Task<ActionResult<ResultDto>> StartReadFiles(
    [ModelBinder(typeof(JsonModelBinder))] RequestDto request,
    IFormFile file1,
    IFormFile file2
)

А теперь я хочу написать тест для этой ошибки.

Как можноЯ подделываю запрос с очень большим телом?

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Возможно, вы используете не ограничение размера запроса, а ограничение размера формы;пожалуйста, попробуйте с RequestFormLimits(MultipartBodyLengthLimit=Int32.MaxValue).Обратите внимание, MultipartBodyLengthLimit относится к типу long, и, учитывая ваш случай, я думаю, что это вполне справедливо для полного ограничения размера формы.

0 голосов
/ 05 марта 2019

Очень удобно писать такие тесты, используя пакет 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

Кстати, по умолчанию основное приложение asp.net имеет ограничение размера запроса 28,6 МБ.Вы можете отключить его с помощью [DisableRequestSizeLimit] (как вы это сделали), а затем вы можете сделать запрос с любым размером полезной нагрузки, но обычно это нежелательное поведение.Тогда, вероятно, лучше использовать [RequestSizeLimit(50_000_000)], чтобы изменить предел по умолчанию на желаемое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...