Создаем первое приложение на NancyFX часть пятая. Тестирование приложения

в 7:50, , рубрики: .net, asp.net mvc 4, метки: , ,

В предыдущих статьях я продемонстрировал Вам как можно с легкостью создать и сконфигурировать под свои нужды приложение на NancyFX. Однако в нынешнее время преставить себе процесс промышленной разработки програмного обеспечения в отрыве его от тестирования просто не возможно. Давайте добавим к нашему первому приложению проект для его тестирования.

NancyFX предоставляет для тестирования Nancy приложений библиотеку Nancy.Testing, которую мы с можем добавить в наше приложения с помощью NuGet. И так, давайте добавим в солюшен с нашим первым приложением тестовый проект.(В данном примере я для удобства буду использовать фреймворк MSTest, данный фреймворк может быть с легкостью заменен на nUnit или же на любые другие тестовые фреймворки, без каких бы то нибыло существенных трудозатрат).

Создаем первое приложение на NancyFX часть пятая. Тестирование приложения

Теперь добавим в наш тестовый проект ссылку на тестируемый проект.

Создаем первое приложение на NancyFX часть пятая. Тестирование приложения

Далее запустим NuGet Package Manager и добавим в проект библиотеку Nancy.Testing

Создаем первое приложение на NancyFX часть пятая. Тестирование приложения

Нам надо добавить в тестовый проект класс реализующий интерфейс IRootPathProvider.Сразу оговорюсь, что это связанно с ошибкой возникающей при запуске тестов NancyFX в связке с MSTest фреймворк. При работе с фреймворком nUnit добавления данного класса не требуется. И так добавляем TestRootPathProvider единственный метод которого должен возвращать абсолютный путь путь к тестируемому проекту. Код провайдера должен выглядеть следующим образом:

using Nancy;

namespace NancyTestProject
{
    public class TestRootPathProvider : IRootPathProvider
    {
        public string GetRootPath()
        {
            return @"C:......GitHubNancyFxApplicationNancyFxApplication";
        }
    }
}

Теперь добавляем в проект новый тест. В параметрах бутстраппера которого, мы должны указать, какой именно модуль мы будем тестировать, а также указать провайдер пути к тестируемому проекту, который мы определили ранее. Далее в коде теста мы создаем экземпляр класса Browser с помощью которого мы сможем вызывать наше приложение. Далее следует блок проверки, где мы с помощью ассертов будем проверять правильность работы нашего модуля.

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Nancy;
using Nancy.Testing;
using NancyFxApplication;

namespace NancyTestProject
{
    [TestClass]
    public class NancyTest
    {
        [TestMethod]
        public void simplest_get_test()
        {
            var bootstrapper = new ConfigurableBootstrapper(with =>
            {
                with.Module<NancyFxModule>();
                with.RootPathProvider<TestRootPathProvider>();
            });

            // Given
            var browser = new Browser(bootstrapper);

            // When
            var result = browser.Get("/", with =>
                {
                    with.HttpRequest();
                });

            // Then
            Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
        }
    }
}

Теперь запускаем наш тест в тест эксплорере и получаем следующий результат:

Создаем первое приложение на NancyFX часть пятая. Тестирование приложения

Как видите настройка тестового окружения заняла буквально несколько минут. Теперь же вы можете с легкостью добавлять новые тесты, тестируя ваше приложение. В завершении хотелось бы сделать краткий анонс последней статьи цикла. Она будет посвящена Nancy.SelfHosting.
Спасибо за внимание, жду Ваших отзывов и замечаний.

Автор: Moozund

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js