我正在尝试制作一个非常简单的请求规范来测试我的应用程序中的API方法。现在,当我应该通过此测试获得200消息时,我收到了302消息。
规范:
require 'spec_helper'
describe UsersController do
describe "#create" do
it "creates a new user " do
post '/users', user: FactoryGirl.attributes_for(:user)
expect(response.status).to eq 200
end
end
end
工厂:
FactoryGirl.define do
factory :user do
sequence(:name) { |n| "Person #{n}" }
sequence(:username) { |n| "Person#{n}" }
sequence(:email) { |n| "person_#{n}@example.com"}
password "foobar"
password_confirmation "foobar"
end
end
控制器方法:
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
我错过了什么?
答案 0 :(得分:1)
所以你需要进行异步发布请求,它应该是类似下面的内容,
it "creates a new user " do
xhr :post, '/users', user: FactoryGirl.attributes_for(:user)
expect(response.status).to eq 200
end
试试这个,它可能会起作用
答案 1 :(得分:0)
要解决此问题,我需要在我的请求中添加ACCEPT
标头,如下所示:
post "/users", { user: @user } , { accept: 'application/json' }
这样做解决了服务器没有将请求解释为期望json的问题。