Невозможно установить возвращаемые значения с помощью FakeItEasyC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно установить возвращаемые значения с помощью FakeItEasy

Сообщение Anonymous »

Я просто работаю над тестированием некоторых контроллеров Web Api. Однако я не могу понять, в чем проблема с возможностью установки возвращаемых значений в виде списка. При отладке выходные данные контроллера не подделываются по какой-то странной причине. Если я тестирую контроллер, который возвращает только одно значение, подделка работает отлично.
Контроллер:

Код: Выделить всё

    public class ClassController : ControllerBase
{
private readonly IClassSqlService ClassSql;
private readonly ILogger Logger;

public ClassController(
IConfiguration config,
ILogger logger,
IDataAccessAbstractFactory classSql)
{
string SMString = config.GetValue(DataAccessName.SMCnx)!;
Logger = logger;
ClassSql = classSql.Create(SMString);
}

[HttpGet]
[ProducesResponseType(200, Type = typeof(List))]
public async Task ReadAllClasses(
string? academic_year = null)
{
List output;

if(academic_year is not null)
{
bool isIdValid = int.TryParse(academic_year, out int year);

if (isIdValid is false)
return BadRequest();

output = await ClassSql.ReadAllClassesByAcademicYearAsync(academic_year);
}
else
{
output = await ClassSql.ReadAllClassesAsync();
}

if (output.Any() is false)
return NotFound();

return Ok(output);
}
}
Мое модульное тестирование выглядит следующим образом:

Код: Выделить всё

public class ClassControllerTests
{
private readonly IClassSqlService ClassSql;
private readonly ClassController sut;

public ClassControllerTests()
{
var config = A.Fake();
var classSql = A.Fake();
var logger = A.Fake();

sut = new ClassController(config, logger, classSql);
ClassSql = classSql.Create(string.Empty);
}

[Fact]
public async Task ReadAllClassesShouldReturnOk()
{
// arrange
var classes = A.CollectionOfFake(5);
A.CallTo(() => ClassSql.ReadAllClassesAsync()).Returns(classes.ToList());

// action
var result = await sut.ReadAllClasses();

// assert
result.Result.Should().NotBeNull();
result.Result.Should().BeOfType(typeof(OkObjectResult));
result.Value.Should().NotBeEmpty();
}
}
Я прочитал документацию FakeItEasy и последовал их примеру с поддельными коллекциями, но безуспешно.
Любая помощь была бы замечательной.
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/783 ... fakeiteasy
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • FakeItEasy автоматически издевается над чем-либо
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как использовать FakeItEasy для подделки сложного анализа запроса linq в словарь
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как использовать FakeItEasy для подделки сложного анализа запроса linq в словарь
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как создать HttpResponseHeaders для FakeItEasy
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • PHP: возвращаемые значения для сложных типов лишние? [закрыто]
    Anonymous » » в форуме Php
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»