Ruby on rails rails rspec stubbed ActiveRecord::ActiveRecord序列化的关系

Ruby on rails rails rspec stubbed ActiveRecord::ActiveRecord序列化的关系,ruby-on-rails,activerecord,rspec,rails-activerecord,rspec-rails,Ruby On Rails,Activerecord,Rspec,Rails Activerecord,Rspec Rails,我可以为ActiveRecord序列化设置存根ActiveRecord::关系吗 我可以删除ActiveRecord::Relation。。但它不适用于ActiveRecord序列化 在我的控制器中,我有如下内容: @res = ModelName.includes(...).where(...).order(..).page(..).per(..) render json: { res: ActiveModelSerializers::SerializableResource.new(

我可以为ActiveRecord序列化设置存根ActiveRecord::关系吗

我可以删除ActiveRecord::Relation。。但它不适用于ActiveRecord序列化

在我的控制器中,我有如下内容:

@res = ModelName.includes(...).where(...).order(..).page(..).per(..)
render json: {
   res: ActiveModelSerializers::SerializableResource.new(
      res,
      each_serializer: ModelNameSerializer,
      meta: pagination_dict(@res)
      adapter: :json
   ).as_json
 }
relation = ModelName.all.page(1)
allow(relation).to receive(:[]).and_return([obj_1, obj_2])
allow(ModelName).to receive_message_chain(:includes, :where, :order, :page, :per).and_return(
      relation
    )
在rspec测试文件中,我做了如下操作:

@res = ModelName.includes(...).where(...).order(..).page(..).per(..)
render json: {
   res: ActiveModelSerializers::SerializableResource.new(
      res,
      each_serializer: ModelNameSerializer,
      meta: pagination_dict(@res)
      adapter: :json
   ).as_json
 }
relation = ModelName.all.page(1)
allow(relation).to receive(:[]).and_return([obj_1, obj_2])
allow(ModelName).to receive_message_chain(:includes, :where, :order, :page, :per).and_return(
      relation
    )
没有错误,但仍然序列化返回0对象!,所以存根操作符
[]
不适用于每个序列化程序


有什么想法吗?!,谢谢

一开始不要把它存根?而是安排规范来创建数据库记录。在请求/控制器规范中删除db很少是个好主意,因为控制器所做的大部分工作是与db集成。您也不需要手动创建
ActiveModelSerializers::SerializableResource
。只需使用
render json:@res,每个序列化程序:ModelNameSerializer,meta:pagination_dict(@res)
。您还声明了实例变量
@res
并使用了一个局部变量
res
@max谢谢,实际上我使用的是ruby gem。。所以与DB的集成不在控制器级别,这就是为什么我不为控制器编写集成测试。。。我正试图在rspec中存根记录。。为了提高运行测试速度。。。