Результаты тестирования списков - PullRequest
0 голосов
/ 29 августа 2018

Я создаю модульное тестирование с использованием NLog и NSubstitute.

У меня в API Controller этот метод:

    public GenericListItems<CalendarYearItem> GetYears(int startingYear = 0,  int rangeYears = 50, int startIndex = 0, int itemCount = 4)
    {
        if (startingYear == 0)
        {
            startingYear = DateTime.Now.Year;
        }

        List<CalendarYearItem> years = Enumerable.Range(startingYear, rangeYears).Select(x => new CalendarYearItem(x++)).ToList();
        if (years != null)
        {
            int firstIndex = 0;
            int totalCount = years.Count;
            years = PaginateList(years, startIndex, itemCount, totalCount, firstIndex);
            return new GenericListItems<CalendarYearItem>(years, firstIndex, totalCount);
        }
        return new GenericListItems<CalendarYearItem>();
    }

И этот интерфейс:

    /// <summary>
    /// Get Years
    /// </summary>
    /// <returns>List Months</returns>
    GenericListItems<CalendarYearItem> GetYears(int startingYear, int rangeYears, int startIndex = 0, int itemCount = 4);

Мне нужен тест при вызове этого метода, если возвращено общее количество 50; Если начальный год равен 0, подтвердите, если первая позиция 2018;

   [Test]
    [TestCase(0, 50)]
    public void GetYears_GetCalendarListYearWithEmptyYear_ReturnCalendarListYearsStartingCurrentYear(int startingYear, int rangeYears)
    {
        GenericListItems<CalendarYearItem> calendar = new GenericListItems<CalendarYearItem>();

        _substitute.GetYears(startingYear, rangeYears);

        Assert.That(calendar.TotalCount, Is.EqualTo(50));
        //var result = _substitute.GetFullDate(year, month, day).Returns(calendar);
        //Assert.AreEqual(calendar, result);
    }

Вместо Assert мне нужно использовать Collections Assert? но когда создать аранжировку мне нужно скопировать мой запрос linq для создания?

1 Ответ

0 голосов
/ 29 августа 2018

Nunit поддерживает коллекцию assert. Однако ваш вопрос мне не понятен. Что вы на самом деле хотите проверить?

Если вы хотите проверить, что ваша реализация возвращает 50 элементов, вы должны использовать не макет, а объект вашей реализации, в противном случае вы пишете тест для nsubstitute. Если вы пытаетесь протестировать реализацию вашего генератора списков, я бы ожидал такого теста.

    [Test]
    [TestCase(0, 50)]
    public void GetYears_GetCalendarListYearWithEmptyYear_ReturnCalendarListYearsStartingCurrentYear(int startingYear, int rangeYears)
    {
        var sut = new InstanceOfYourCalculator();

        GenericListItems<CalendarYearItem> calendar = sut.GetYears(startingYear, rangeYears);

        Assert.That(calendar, Has.Count.EqualTo(rangeYears));

        var expectedResult = Enumerable.Range(DateTime.Now.Year, rangeYears).Select(x => new CalendarYearItem(x++)).ToList();
        CollectionAssert.AreEqual(expectedResult, calendar);
    }

Вы сказали, что используете NSubtsitute, и, по моему мнению, вы создаете макет, который возвращает пустой список. Кроме того, вы не используете макет в своем тесте, вы просто его инициализируете. Если вам это не понятно, пожалуйста, ознакомьтесь с руководством nsubstitute. http://nsubstitute.github.io/help/getting-started/

...