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.
Спасибо за внимание, жду Ваших отзывов и замечаний.
ссылка на оригинал статьи http://habrahabr.ru/post/203346/
Добавить комментарий