我必须为将 Cvs 文件导入和转换为组件的函数编写单元测试 为了完成这项工作,我在测试中初始化了 Controllers HtpContext。如下
public async Task Parse_ValidCsv()
{
//*
Test Data is implemented here
*//
var controller = _provider.GetService<ComponentController>();
var content = new MultipartFormDataContent();
var streamContent = new StreamContent(new
MemoryStream(Encoding.UTF8.GetBytes(_fileContent)));
content.Add(streamContent, "file", "file.csv");
controller.ControllerContext = new ControllerContext();
controller.ControllerContext.HttpContext = new DefaultHttpContext();
controller.ControllerContext.HttpContext.Request.Headers.ContentType =
content.Headers.ContentType.ToString();
controller.ControllerContext.HttpContext.Request.Body = await content.ReadAsStreamAsync();
var response = await controller.Parse() as JsonResult;
_jobs = response?.Value as Dictionary<string, Guid>;
var dictionary = _jobs;
Guid id;
_jobs.TryGetValue("job", out id);
var resultSetNew = await controller.GetImportJobResults(id, 1, 0, 5,"","").ToListAsync();
...
}
到目前为止,在调试模式下,我可以看到组件被正确解析。 我现在遇到的错误发生在下面的函数中
private IQueryable<T> QueryResults<T>(IQueryable<T> query, int? skip, int? take, string orderBy,
string filter, bool supportWildcards = false, bool updateHeaders = false)
{
if (!string.IsNullOrWhiteSpace(filter)) query = query.Where(supportWildcards ?
filter.TreatQueryNonWordCharactersAsWildcard() : filter);
if (!string.IsNullOrWhiteSpace(orderBy)) query = query.OrderBy(orderBy);
var count = query.Count();
var range = (take.HasValue, skip.HasValue) switch
{
(true, true) => $"{Math.Min(skip.Value, count - 1)}-{Math.Min(skip.Value + take.Value - 1,
count - 1)}",
(true, false) => $"0-{Math.Min(take.Value - 1, count - 1)}",
(false, true) => $"{Math.Min(skip.Value, count - 1)}-{count - 1}",
(false, false) => "*"
};
if (updateHeaders) Response.Headers.ContentRange = $"entries {range}/{count}";
if (skip.HasValue) query = query.Skip(skip.Value);
if (take.HasValue) query = query.Take(take.Value);
return query;
}
在行中 if (updateHeaders) Response.Headers.ContentRange = $"entries {range}/{count}"; 抛出 Null 异常。我如何正确初始化 Response.Headers?
我尝试在 Arrange 部分设置标题,但因为它是只读的,所以我不能这样做。