Skip to main content
The Kai Way

Story on Rspec

Stroy框架是一个在应用程序级别对测试进行描述的框架。Rspec的BDD测试中其实缺少了一个像Rails传统测试中的集成测试(integration tests)那样的东西,Rspec::Strop就是为了补上这个部分而产生的。

Stroy格式:

Title (故事标题)

故事的描述: 作为一个怎样的角色 我想要什么样 最后得到怎样的结果

验证故事的标准: (以场景(Scenario)的形式提出)

Scenario: 场景标题 Given [场景内容] And [场景附加内容]… When [发生事件] Then [产生的后果] And [其它后果]…

Scenario: …

以上就是故事编写的基本结构,Given后可以加多个And,Then也是。故事直接保存为文本文件就可以了。然后开始编写故事的验证机制(其实就是针对上面描述的场景以代码来表示)。

故事验证格式:

steps_for(:故事名) do Given("场景内容") do |占位符| 代码描述 end When("发生事件") do |占位符| 代码描述 end Then("产生的后果") do |占位符| 代码描述 end end

解释下,Given块的个数应该与故事清单中的Given语句加后面的And的个数相当,Then块也是。

例子: 故事login

Story: 以存在的用户身份登录 作为一个未认证的用户 我想要登录到网站 那么我能看见我的账户信息

Scenario: 正常登录 Given 我的账户为[email protected] When 我用邮箱为[email protected]和密码是foofoo进行登录 Then 我能够登录 And 我会看到账户页面

故事验证login.rb:

require 'rubygems' require 'spec/story' steps_for(:login) do Given "我的账户为$email" do |email| @user = find_or_create_user_by_email({:email => email, :password => 'foofoo', :password_confirmation => 'foofoo'}) end

When "我用邮箱为$email和密码是$password进行登录" do |email, password| post '/login', :user => {:email => email, :password => password} end

Then("我能够登录") do end

Then("我会看到账户页面") do end end

with_steps_for(:login) do run "login" end

参考: