我会为此使用Cucumber(但我非常有偏见),我会先从应用程序的核心部分编写一些场景开始。
一些重要的规则来写你的场景时遵循
- 使用您的域语言
- 只谈你正在做什么和为什么它的重要
- 不要谈论你如何做的事情。
因此,你的超级英雄网站,你可以开始考虑你需要做的事情开始。
通常当你发现一个资源(超级英雄),你将有你可以探索一些基本的CRUD操作,所以
- 创造的超级英雄
- 编辑超级英雄
- 删除超级英雄
- COMPARING一个超级英雄**这是你的关键出发点**
让我们开始工作比较一个超级英雄场景
Given there are superheroes Batman and Superman And I am like Batman When I find my superhero Then I should see I am like Batman
现在让我们开始实施这一方案。这里最重要的一点是不要将所有代码放在步骤定义中。相反,使每个步骤定义调用辅助方法。
注:以下所有的代码将红宝石
Given 'there are superheroes Batman and Superman' do create_superhero batman create_superhero superman end
现在我们可以进入BDD红/绿测试周期。
因此,我们将开始得到这样的错误No method found create_superhero
和undefined constant batman
。我们可以在步骤定义中使用辅助模块来解决这些问题。
module CreateSuperHeroStepHelper
def create_superhero(attrs={})
Superhero.create(attrs)
end
def batman
{
...
}
end
...
end
而从这段代码中,我们可以开始处理我们应用程序的域对象。超级英雄。
为了得到这一步的工作,你必须与你的潜在的Web框架交互。一旦你有它的工作,以最基本的形式,你可以进入下一步。
沿途你将有各种各样的选择,你下一步怎么办的方法。如果你坚持在这个核心场景中工作,你必须聪明的实现你的实现。如果您决定处理看起来像先决条件的情景,例如用户帐号,创建超级英雄,输入你的超级英雄特征,添加超级英雄特征。然后,你应该结束了,你可以使用你的核心方案(例如你必须create_superhero
)的工具,但它会需要更长的时间才能到您的应用程序的核心。
没有必要要考虑的单元测试,层或嘲讽这里。这就是关于你如何做的事情的低级细节。只要你在你的web框架中有一些基本的能力,你应该开始探索你的域名,并使用BDD创建简单的工具,你可以用它来探索你的超级英雄世界。
祝你好运
你会使用与API测试相同的场景吗? – acejazz
有效的是。该API使用集成和单元测试进行测试。其他UI测试也将接触到的API,如果在制度层面做 – MikeJ