Rspec控制器规格

urj*_*ils 2 bdd controller rspec ruby-on-rails-3

我是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
Run Code Online (Sandbox Code Playgroud)

请帮我.
谢谢.

Sal*_*lil 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
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅rails controller规范.

编辑:

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

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

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

欲了解更多信息,请参考:
1. 测试指南
2. asciicast(注:此代码指的是旧版本FactoryGirl宝石参阅以下跟上时代的FactoryGirl的API.)
3. FactoryGirl自述