测试保存新用户的简单get请求

时间:2015-01-11 18:57:01

标签: ruby-on-rails ruby ruby-on-rails-4 rspec

我是测试的新手,并尝试测试一个简单的get-Request来控制这个Controller-Method:

def new
  u = User.new({firstname: 'John',lastname: 'Smith'})
  u.save
end

当我通过浏览器请求此方法时,将创建一个新用户。

现在我尝试测试这个获取请求:

require 'spec_helper'
describe UsersController, :type => :controller do 

    describe 'GET #new' do 

        it "generates a fake User" do 
            expect {get :new}.to change(User, :count).by(1)
        end

    end
end

但不知何故,这个测试失败了,我收到了消息:

   expected #count to have changed by 1, but was changed by 0

我错了什么?感谢

1 个答案:

答案 0 :(得分:0)

John,向#new而不是GET发送POST请求应该清除该问题。这个堆栈溢出问题应该有助于辨别何时使用POST与GET When should I use GET or POST method? What's the difference between them?

顺便说一句,惯例是使用POST#create来实例化某些内容并将其保存到同一函数中的数据库中。这样,GET#new呈现new.html.erb视图和'提交'该表单上的按钮实际上使用已输入的参数发送POST #create。