У меня есть этот метод в моем контроллере, он запрашивает данные из базы данных, в этом случае он берет задание с предоставленным идентификатором и отправляет сообщение HttpResponse на веб-сайт, содержащий некоторые вложения (pdf, txt и т. Д.):
[HttpGet]
[Route("jobs/{id}/attachment")]
public HttpResponseMessage GetAttachment([FromUri]Guid id)
{
if (job.Blob == null)
{
// The job exists, but has no result data
return this.CreateApiError(ApiError.ApiErrors.NO_CONTENT, "Job has no attachment", HttpStatusCode.NoContent);
}
var result = new HttpResponseMessage();
result.Content = new StreamContent(new System.IO.MemoryStream(job.Blob));
result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentDisposition.FileName = job.Filename;
result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
return result;
}
Возвращает status 200
и работает нормально.
Я пишу для него модульный тест, который выглядит следующим образом: я делаю данные о задании, добавляю их в базу данных с помощью JobQuery.Update(job);
, а затемпопытайтесь получить его данные:
[Test]
public void GetAttachmentTest()
{
var text = Encoding.ASCII.GetBytes("{\"name\":\"John\"}");
System.IO.File.WriteAllBytes(AppDomain.CurrentDomain.BaseDirectory + @"\" + "Report -12.txt", text);
var job = new Job
{
Id = Guid.Parse("deadbeef-dead-beef-0000-000000000000"),
Filename = "Report -12.txt",
AudienceOrganizationId = organization.Id,
AudienceUserId = apiUser.Id,
Blob = text
};
HttpResponseMessage getAttachment;
try
{
getAttachment = this.Get<HttpResponseMessage>(this.url + this.prefix + "jobs/" + job.id + "/attachment");
}
catch (Exception ex)
{
Assert.Fail("Get jobs/{id}/attachment failed");
return;
}
}
this.Get<HttpResponseMessage>(this.url + this.prefix + "jobs/" + job.id + "/attachment");
идет к контроллеру и ищет работу с этим идентификатором и возвращает вложение.В контроллере все работает нормально, если я посмотрю на ответ с веб-сайта, я получу его, но я не могу сделать это, чтобы получить его здесь в моем модульном тесте.И здесь getAttachment
я получаю ноль.Как мне изменить мой тестовый модуль, чтобы получить ответ?Работа сохраняется в базе данных.У него есть файл вложения, который я получаю с помощью HttpResponse.