Pull to refresh

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

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

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



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



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



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

using Nancy;

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


Теперь добавляем в проект новый тест. В параметрах бутстраппера которого, мы должны указать, какой именно модуль мы будем тестировать, а также указать провайдер пути к тестируемому проекту, который мы определили ранее. Далее в коде теста мы создаем экземпляр класса 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);
        }
    }
}


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



Как видите настройка тестового окружения заняла буквально несколько минут. Теперь же вы можете с легкостью добавлять новые тесты, тестируя ваше приложение. В завершении хотелось бы сделать краткий анонс последней статьи цикла. Она будет посвящена Nancy.SelfHosting.
Спасибо за внимание, жду Ваших отзывов и замечаний.
Tags:
Hubs:
Total votes 14: ↑12 and ↓2+10
Comments0

Articles