测试保存新用户的简单获取请求
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 以及已输入的参数。
我是测试新手,并尝试测试对此控制器方法的简单获取请求:
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 以及已输入的参数。