是否有任何人有使用现成框架作为BDD中CQRS规范的经验。
我喜欢Mark Nijhof的方法,但我已经将SpecFlow用于其他项目。任何人都可以提供一些启示,如果可能的话还有一个例子吗?
答案 0 :(得分:8)
我在我当前的项目中使用它。
我正在使用SpecFlow进行UI测试(Web客户端)和一些导入测试。
对于单元测试,我使用的是Machine.Specifications。
我认为SpecFlow很适合这项任务。我得到了需求专家,sprint测试人员以及有时编写规范的项目经理的支持,这意味着我可以专注于实现功能而不是阅读繁重的需求规范。
从技术上讲,我使用CassiniWebDev来托管Web客户端项目,并使用简单的Process.Start为NServiceBus端点进行使用整圈的测试。我使用Selenium进行Web UI测试,然后使用FluentAutomation。花了几天的时间才把它全部搞定,但这绝对值得。
我生成SpecFlow报告,使用Pickles将功能渲染到Web并使用Selenium拍摄屏幕截图并在项目网站上发布整个内容,以便所有利益相关者可以看到正在发生的事情以及目前的情况。 / p>
我建议为BDD / CQRS项目使用SpecFlow。
答案 1 :(得分:4)
我使用Machine.Spec来测试带有BDD的CQRS。从我的观点来看,它运作得很好。例如:
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();