2011-12-14 2 views
5

Есть ли у кого-нибудь опыт использования готовых фреймворков в качестве specflow с CQRS в BDD.Кто-нибудь сделал BDD с CQRS с использованием SpecFlow/StoryQ

Мне понравился подход Марка Нийхофа, однако я уже использовал SpecFlow для других проектов. Может ли кто-нибудь предложить немного просветления, если возможно, пример?

ответ

8

Я использую его в своем текущем проекте.

Я использую SpecFlow для тестирования пользовательского интерфейса (веб-клиент) и для некоторых тестов импорта.

Для модульных испытаний я использую Machine.Specifications.

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

Технически я использую CassiniWebDev для размещения проекта веб-клиента и простой Process.Start для конечных точек NServiceBus для тестов, которые используют полный круг. Я использую Selenium для тестирования веб-интерфейса и FluentAutomation. Потребовалось пару дней, чтобы все исправить, но это определенно стоит того.

Я генерирую отчеты SpecFlow, использую Pickles для рендеринга Особенности в Интернете и снимаю снимки экрана с помощью Selenium и публикую все на веб-сайте проекта, чтобы все заинтересованные стороны могли видеть, что происходит и что на данный момент выглядит.

Я бы порекомендовал SpecFlow для проекта BDD/CQRS.

+0

спасибо Mikael за то, что поделился, странно, что я не нашел подходящего примера. большинство из них относятся к MSpec, возможно, из-за времени появления. То, что я видел в одном примере, выглядит главным образом подробным сравнением подхода Марка Нийхофа, остается кратким. Я хотел бы увидеть несколько с SpecFlow – mobygeek

+0

Как насчет ожидающих отправки сообщений через систему? Как ты это делаешь? – iwayneo

4

Я использовал Machine.Spec для тестирования CQRS с BDD. С моей точки зрения, это сработало неплохо. Например:

Establish context =() => 
     { 
      // set up your fakes & mocks here... 
     }; 

    Because of =() => 
     { 
      _bus.Send(_createNewCustomer); 
      _version++; 
     }; 

    It should_create_a_customer =() => 
     { 
      _repository.GetById(_id).Id.ShouldEqual(_id); 
     }; 

    It should_publish_a_customer_Created_event =() => 
     { 
      _subscriber.HandledEvents.Count.ShouldEqual(1); 
      _subscriber.HandledEvents.First().Value.ShouldBeOfType(typeof(CustomerCreatedEvent)); 
     }; 

    Cleanup Clear_Context =() => _subscriber.HandledEvents.Clear(); 
Смежные вопросы