rai*_*ser 7 rspec ruby-on-rails
有没有办法为用户控制器操作创建Rspec测试,例如"创建"和"新建?"
我不太清楚两个行为"创造"和"新"之间的差异; 有人可以这么善意地详细说明吗?
创建测试后,我将如何实现redirect_to root_path?我想我应该在before_filter signed_in部分中包含"new"和"create"操作,但这不会自动重定向到root.
我尝试通过修改users_controller.rb文件来传递测试,如下所示:
def create
if signed_in?
redirect_to root_path
else
@user = User.new(params[:user])
if @user.save
sign_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
end
Run Code Online (Sandbox Code Playgroud)
rkr*_*rdo 10
我做了一个之前的过滤器,似乎运行良好,为测试我这样做:
在authentication_pages_spec.rb上
describe "signin" do
describe "authorization" do
describe "for signed in users" do
let(:user) { FactoryGirl.create(:user) }
let(:new_user) { FactoryGirl.attributes_for(:user) }
before { sign_in user }
describe "using a 'new' action" do
before { get new_user_path }
specify { response.should redirect_to(root_path) }
end
describe "using a 'create' action" do
before { post users_path new_user }
specify { response.should redirect_to(root_path) }
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
就像@WillJones所说,有些人可能不得不添加no_capybara: true到前一块
在我的用户控制器上:
before_filter :signed_in_user_filter, only: [:new, :create]
def signed_in_user_filter
redirect_to root_path, notice: "Already logged in" if signed_in?
end
Run Code Online (Sandbox Code Playgroud)
对于new和create操作之间的区别,它与REST架构风格有关,但基本上new是来自用户控制器的响应GET请求的操作,并且是负责返回它响应的视图的操作(在这种情况下,一个新的用户表单).create另一方面,是一个响应POST请求的动作,它不呈现任何内容(它可以用javascript响应,但这是一个高级主题),它是负责创建新用户的动作,就像动作的名称所暗示的那样.
| 归档时间: |
|
| 查看次数: |
1391 次 |
| 最近记录: |