Rspec控制器规格

时间:2012-05-11 11:40:18

标签: ruby-on-rails-3 rspec controller bdd

我是Rspec的新手请告诉我什么是以下两种方法的控制器规格在索引方法中只有登录页面才能看到输入用户名控件转到登录方法并查找人名。如果找到了人,则控制进入人员路径,否则它将返回到自己的索引页面的根路径。

class HomeController < ApplicationController
def index

end

def login
  @person = Person.find(:all, :conditions => ['people.name =?', params[:person][:name]] )

  if @person.blank?
    redirect_to root_path          
  else
    redirect_to people_path
  end
end
end

请帮帮我 感谢。

1 个答案:

答案 0 :(得分:5)

您的rspec控制器测试可能是这样的:

describe HomeController do
  render_views
  it "Logs in Person with non-blank name" do
    person = Factory(:Person, name: "non-blank name")
    get :login
    response.should redirect_to(people_path)
  end
  it "does not log in Person with blank name" do
    person = Factory(:Person, name: "") # blank name
    get :login
    response.should redirect_to(root_path)
  end
end

有关详细信息,请参阅rails controller specs

编辑:

Factory:创建对象的代码(在本例中为测试对象)。这是创建测试对象的首选方法,因为您可以自定义代码以创建具有不同属性且具有最少重复的对象。

灯具:如果您不使用工厂,则可以为要创建的每个对象指定属性。对于超过2-3个对象,此数据很快就难以维护(例如,当您添加属性时,您需要对每个对象进行更改)。

存根:如果您不想在创建模型对象时创建数据库记录,则可以存储模型代码白色测试控制器。

有关更多信息,请参阅:
1. testing guide
2. asciicast(注意:此代码指的是旧版FactoryGirl gem。请参阅下面的FactoryGirl最新API) 3. FactoryGirl Readme