我听说故事驱动开发(SDD)有一段时间了,但是我一直没有试着使用它, 因为在我印象中,在我能去使用它之前,我需要大量精力去学习和安装它。 我不确定原来的感觉是否真实, 但是我昨天开始使用‘黄瓜’(cucumber),它真的是很容易。
安装和配置
你需要安装很多gem包来支持cucumber
sudo gem install nokogiri term-ansicolor treetop diff-lcs hpricot cucumber
然后在你的Rails应用里安装Cucumber
ruby script/generate cucumber
安装WebRAT. 不幸的是, 它只用gem包好像不管用。(译者注:译者正好和他相反,装了plugin反而用不了,只能用gem)如果你用Git,可以直接用下面的语句安装它。 我们不是,所以我clone这个代码仓库然后svn add 。
git clone git://github.com/brynary/webrat.git vendor/plugin/webrat
写你第一个故事
故事由三部分组成:一个商业价值部分, 一个使用这个特性的角色和一些对这些特性的描述
In order to [do something with business value]
As [role]
Should [describe the feature]
有个从皮萨快递公司的在线订购系统订购一份皮萨的例子:
Feature: Order Pizza
In order to get some hot, tasty pizza
A hungry pizza lover
Should be able to order pizza
下一步,我们需要定义一些场景。场景都是可能发生的故事。 大多数皮萨店不是全天24小时开放,所以有两个简单的场景是:(1)皮萨店关门了,和(2)皮萨店正常营业。
Scenario: The pizza shop is closed
Given the pizza shop is closed
And I am on the home page
And I click "Feed Me!"
Then I should see "Sorry, the shop is closed"
Scenario: The pizza shop is open
Given the pizza shop is open
And I am on the home page
And I click "Feed Me!"
Then I should see "Your pizza will be with you soon"
以上的描述应该放到一个名为类似features/order_pizza.feature的文件里, 在那它是可爱的,并且可以版本控制和安全的。
所以,我们现在有了一个故事,描述了这个特性应该有什么样的行为。 如何让这个变成验收测试呢? 嗯, 你可以把这些描述给您的测试团队,或者你可以把它们变成你测试套件的一部分。
自动测试: 比蛋糕更美味
你可能会注意到,当你安装了‘黄瓜’,你会得到一个目录features/steps. 它是告诉你的测试套件如何理解你的故事。那儿有两个文件: common_webrat.rb ,它会给你一些时髦的东西, 像可以点击的链接; 还有env.rb,它几乎和spec/spec_helper.rb 是一样的功能。你可以忽略env.rb, 但是common_webrat.rb 会提供一些如何开始一步步写故事的例子。
创建一个新的文件, order_pizza_steps.rb. 这里是定义订购皮萨步骤的地方。它几乎只是正则表达式,用Ruby代码来匹配每行场景。
Given /the pizza shop is open/ do
PizzaShop.open = true
end
Given /the pizza shop is closed/ do
PizzaShop.open = false
end
And /I am on the home page/ do
visits "/"
end
我们需要做的就这些。 通用的WebRAT步骤提供必要的点击按钮映射和反馈检查。
运行你的故事
这是相当简单了:执行 rake features. 你应该可以得到一些相当漂亮的彩色输出,并且如果有任何错误,‘黄瓜’都会给你漂亮的建议来解决此问题。
本文版权所有,未经许可,请勿转载
内容合作请 联系我们









用过‘黄瓜’吗? - Cucumber + Rails 开始你的故事







Rebecca 秀才 | 2008年12月01日
有意思~~
Rebecca 秀才 | 2008年12月01日
你从事软件开发的工作吗?
被遗忘 状元 | Blog | 2008年12月01日
是的
楚狂人 童生 | 2008年12月02日
在google上面一看到這個標題,把我驚呆了XD
好吧,我承認我很邪惡
被遗忘 状元 | Blog | 2008年12月02日
哈哈 。。。
猪小宝 状元 | 2008年12月15日
也是看了邪恶的标题跑进来的hiahia