SpecFlow, Webdriver и Mocks - это возможно? - PullRequest
2 голосов
/ 22 сентября 2011

Короче говоря, вопрос заключается в том, что мы сталкиваемся с определениями BDD, которые более или менее требуют разных состояний - что приводит к необходимости некоторого рода макетов для ASP.NET/MVC - я не знаю ни одного, поэтому я спрашиваюздесь

Подробности: мы разрабатываем проект в ASP.NET (MVC3 / Razor engine) и используем SpecFlow для управления нашей разработкой.

Мы часто сталкиваемся с ситуациями, когда нам нужно, чтобы тестируемая веб-страница работала определенным образом, чтобы мы могли проверить поведение, например:

Scenario: Should render alternatively when backend system is down
    Given that the backend system is down
    And there are no channels for the page to display
    When I inspect the webpage under test
    Then the page renderes an alternative html indicating that there is a problem

Для модульного теста этоэто не проблема - запустите mock для бита контроллера и убедитесь, что он дает правильные результаты, однако для теста SpecFlow это более или менее требует альтернативных конфигураций.

Так что это вообще возможно, или - есть какие-то известные программные шаблоны для разработки веб-страниц с использованием BDD, которые я пропустил?

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Даже при использовании SpecFlow вы все равно можете использовать фальшивый фреймворк.Я бы использовал атрибут [BeforeScenario] для настройки макетов для теста, например

[BeforeScenario]
public void BeforeShouldRenderAlternatively()
{
   // Do mock setups.
}

Этот вопрос SO также может пригодиться вам.

0 голосов
/ 11 апреля 2012

Вы можете использовать Deleporter

Deleporter - небольшая библиотека .NET, которая телепортирует произвольных делегатов в приложение ASP.NET в каком-либо другом процессе (например, размещенном в IIS) и запускает их там.

Это позволяет вам вникать во внутренности удаленного приложения ASP.NET без какого-либо специального взаимодействия с удаленным приложением, а затем выполнить любое из следующих действий:

  • Перекрестный процесс насмешки , объединяя его с любым инструментом насмешки. Например, вы можете внедрить временную фиктивную базу данных или смоделировать течение времени (например, если ваши интеграционные тесты хотят указать, что происходит через 30 дней или что-то в этом роде)
  • Проверка различных конфигураций путем записи в статические свойства в удаленном домене приложения ASP.NET или использования API ConfigurationManager для редактирования его записей.
  • Запуск логики очистки или очистки , например, очистка кешей. Например, недавно мне нужно было восстанавливать базу данных SQL до известного состояния после каждого теста в комплекте. Проблема состояла в том, что пул соединений ASP.NET все еще удерживал открытые соединения в старой базе данных, вызывая ошибки соединения. Я легко решил эту проблему, используя Deleporter для выдачи команды SqlConnection.ClearAllPools () в удаленном домене приложения - тестируемому приложению ASP.NET не нужно было ничего об этом знать.
...