我正在使用rails 4开发rails API,我想测试它.为此,我使用的是Rspec框架.
我的API有一个身份验证方法,如下所示:
- class UsersController < ApplicationController
- # Token authentication
- before_action :set_user,except: [:index,:create]
- before_action :authenticate,:create]
- before_action :authenticate_admin,only: [:index,:create]
- ...
- end
然后我有我的UsersController Rspec:
- describe UsersController do
- render_views
- describe "GET /users" do
- it "gets all users" do
- @request.env["AUTHORIZATION"] = "Token token=xxxxxxxxx"
- @request.env["HTTP_ACCEPT"] = "application/json"
- @request.env["CONTENT_TYPE"] = "application/json"
- get :index
- response.status.should be(200)
- end
- end
- end
当我执行测试时,它总是给我一样的:
- UsersController GET /users getting all users
- Failure/Error: response.status.should be(200)
- expected #<Fixnum:401> => 200
- got #<Fixnum:803> => 401
- ...
我使用authenticate_or_request_with_http_token方法从标头中获取令牌.
如果有人可以帮我找到跳过before_action方法或正确设置Authentication头的方法,我将非常感激.
谢谢!