ruby-on-rails – 如何存根after_create回调保存!在模特?

ruby-on-rails – 如何存根after_create回调保存!在模特?,第1张

概述我收到以下错误: 输出: 1) LabelsController#create label is new creates a new label Failure/Error: post :create, attributes[:label], format: :json NoMethodError: undefined method `save!' for nil:NilCl 我收到以下错误:

输出:

1) LabelsController#create label is new creates a new label   Failure/Error: post :create,attributes[:label],format: :Json   NoMethodError:     undefined method `save!' for nil:NilClass   # ./app/models/labeling.rb:17:in `update_target'

在标签模型中:

after_create :update_targetdef update_target   self.target.save!end

测试:

require 'spec_helper'describe LabelsController do  before(:each) do    controller.stub(:current_user).and_return(mock_model(User))    stub_request(:any,"www.example.com").to_return(status: 200)  end  describe "#create" do    context "label is new" do      it "creates a new label" do        attributes = {          label: {            name: "test",labeling: {              target_type: "link",target_ID: 1            }          }        }        response.status.should == 200        post :create,format: :Json      end    end  endend

贴标控制器:

def create    label = Label.find_by_name(params[:name])    labeling = label.labelings.build do |lb|      lb.user_ID     = current_user.ID      lb.target_type = params[:labeling][:target_type]      lb.target_ID   = params[:labeling][:target_ID]    end    if labeling.save      render Json: {        name: label.name,ID: label.ID,labeling: {          ID: labeling.ID        }      }    end  end
解决方法 从它的外观来看,你没有数据库中ID为1的Target,所以在你引用self.target的地方,返回的值是nil.
我在你的情况下做的是首先创建一个目标,然后将其ID传递给属性hash:

target = Traget.create!attributes = {          label: {            name: "test",target_ID: target.ID            }          }        }

这样你就不需要存根了.
如果你真的必须存根该方法,你可以使用RSpecs any_instance方法:

Labeling.any_instance.stub(:update_target).and_return(true)
总结

以上是内存溢出为你收集整理的ruby-on-rails – 如何存根after_create回调保存!在模特?全部内容,希望文章能够帮你解决ruby-on-rails – 如何存根after_create回调保存!在模特?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1267818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存