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

Testing simple get request that saves new user

我是测试新手,并尝试测试对此控制器方法的简单获取请求:

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

我做错了什么?谢谢

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

顺便说一句,惯例是使用POST#create 来实例化一些东西并在同一个函数中将它保存到数据库中。这样 GET#new 呈现 new.html.erb 视图,并且该表单上的 'submit' 按钮实际上发送 POST#create 以及已输入的参数。