最近在用 rspec 写测试脚本,发现 controller 的测试脚本写的好蛋疼,不是 template missing 就是不符合 expectation。。。难道 controller 脚本一定也要配合 view 来用的嘛?连 post 和 delete 这种请求都必须有 template。。。
所以想问问,有必要写 controller 的 rspec 嘛? capypara 是不是可以替换写 controller 和 view 的 rpsec。 感觉 capypara 更加只管,rspec 写 controller 都是模拟请求但是有时又会不符合 expectation
#controller
def log_in
admin=Admin.find_by_name(params[:name])
unless admin.nil?
admin=admin.authenticate(params[:password])
if admin==false
# wrong password,login again
# redirect_to sign_in_admins_url
else
session[:admin]=admin.name
redirect_to root_path
end
end
end
#rspec
describe "Post request for admins" do
it "should log_in with right name and password" do
# admin=FactoryGirl.build(:admin)
post :log_in,name:"ryan",password:"123456"
controller.params[:name].should=="ryan"
controller.params[:password].should=="123456"
# session[:admin].should eq 'ryan'
response.should redirect_to root_path
end
end
如上就是正在面临的一个很蛋疼的问题,rspec 的判定一直都在两个错误里徘徊,template missing 和 response redirect_to "test/sign_in/path",expected root_path