我是测试的新手,并尝试测试一个简单的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
我错了什么?感谢
答案 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。