vjn*_*369 1 ruby rspec ruby-on-rails
我有
class Api::V1::BaseController < ApplicationController
before_filter :authenticate!
private
def authenticate!
session_token = request.env["HTTP_SESSIONTOKEN"]
@current_user = User.where(session_token: session_token).first unless session_token.blank?
unless @current_user
return render_json({message: "ERROR: Invalid Session"})
end
end
def current_user
@current_user
end
end
Run Code Online (Sandbox Code Playgroud)
我正在测试继承base_controller的session_controller
before do
post :create, {email: "raj@gmail.com", user_name: "raj",password: "raj"}
body = JSON.parse(response.body)
@session_token = body["session_token"]
end
describe "PUT #edit_email" do
context "if new email already exist" do
it "should return with a error message" do
put :edit_email, {email: "raj@gmail.com", new_email: "ravi@gmail.com", password: "raj"}
body = JSON.parse(response.body)
expect(body["message"]).to eq("email already exist")
end
end
end
Run Code Online (Sandbox Code Playgroud)
我是rspec的新手,在这里我对使用session_token调用private authenticate方法很困惑.如何调用控制器的私有方法并传递header.Thanks提前.
在Ruby/Rails和OOP中,一般不应测试私有方法.您应该测试接口,而不是私有方法的实现.
实施可以随着时间而改变 - 但它提供的界面(很可能)不会.
| 归档时间: |
|
| 查看次数: |
1407 次 |
| 最近记录: |