Ruby Rspec验证测试在';把';更新
我有这个工厂:Ruby Rspec验证测试在';把';更新,ruby,ruby-on-rails-3,rspec,factory-bot,Ruby,Ruby On Rails 3,Rspec,Factory Bot,我有这个工厂:@host=FactoryGirl.create(:host) 1) HostsController POST update failure should redirect to edit Failure/Error: response.should redirect_to(edit_host_path(@host)) Expected response to be a redirect to <http://test.host/
@host=FactoryGirl.create(:host)
1) HostsController POST update failure should redirect to edit
Failure/Error: response.should redirect_to(edit_host_path(@host))
Expected response to be a redirect to <http://test.host/hosts/1/edit> but was a redirect to <http://test.host/hosts/1>
# ./spec/controllers/hosts_controller_spec.rb:127:in `block (4 levels) in <top (required)>'
此测试通过:
it 'should update and redirect to the show page' do
new_attr = @host.attributes.merge("hostname" => "New_name")
put 'update', id: @host, host: new_attr
response.should redirect_to(host_path(@host))
end¬
1) HostsController POST update failure should redirect to edit
Failure/Error: response.should redirect_to(edit_host_path(@host))
Expected response to be a redirect to <http://test.host/hosts/1/edit> but was a redirect to <http://test.host/hosts/1>
# ./spec/controllers/hosts_controller_spec.rb:127:in `block (4 levels) in <top (required)>'
但这一次失败了:
it 'should fail on validation for empty hostname and redirect to edit' do
bad_attr = @host.attributes.merge("hostname" => "")
put 'update', id: @host, host: bad_attr
response.should redirect_to(edit_host_path(@host))
end
1) HostsController POST update failure should redirect to edit
Failure/Error: response.should redirect_to(edit_host_path(@host))
Expected response to be a redirect to <http://test.host/hosts/1/edit> but was a redirect to <http://test.host/hosts/1>
# ./spec/controllers/hosts_controller_spec.rb:127:in `block (4 levels) in <top (required)>'
出现此错误时:
1) HostsController POST update failure should redirect to edit
Failure/Error: response.should redirect_to(edit_host_path(@host))
Expected response to be a redirect to <http://test.host/hosts/1/edit> but was a redirect to <http://test.host/hosts/1>
# ./spec/controllers/hosts_controller_spec.rb:127:in `block (4 levels) in <top (required)>'
我在控制台中进行了保存和更新属性的操作,验证工作正常。那么为什么会出现这种错误呢?有什么想法吗?Rspec似乎在说我的工厂对象的属性不好,但我的模型验证得很好。谢谢你。/p>/me做掌纹
1) HostsController POST update failure should redirect to edit
Failure/Error: response.should redirect_to(edit_host_path(@host))
Expected response to be a redirect to <http://test.host/hosts/1/edit> but was a redirect to <http://test.host/hosts/1>
# ./spec/controllers/hosts_controller_spec.rb:127:in `block (4 levels) in <top (required)>'
在HostsController#update中,此:
1) HostsController POST update failure should redirect to edit
Failure/Error: response.should redirect_to(edit_host_path(@host))
Expected response to be a redirect to <http://test.host/hosts/1/edit> but was a redirect to <http://test.host/hosts/1>
# ./spec/controllers/hosts_controller_spec.rb:127:in `block (4 levels) in <top (required)>'
@host = Host.find(params[:id])
@host.save
应该是这样的:
1) HostsController POST update failure should redirect to edit
Failure/Error: response.should redirect_to(edit_host_path(@host))
Expected response to be a redirect to <http://test.host/hosts/1/edit> but was a redirect to <http://test.host/hosts/1>
# ./spec/controllers/hosts_controller_spec.rb:127:in `block (4 levels) in <top (required)>'
@host = Host.find(params[:id])
@host.update_attributes(params[:host])
你能发布你的相关控制器代码吗?