gpt4 book ai didi

ruby-on-rails - 创建一个后 Controller 规范测试

转载 作者:行者123 更新时间:2023-11-28 20:42:12 24 4
gpt4 key购买 nike

我正在进行 Controller 测试,但似乎 spec.rb 是错误的。你有什么建议吗?

这是我的posts_controller.rb:

class PostsController < ApplicationController

def create
@post = Post.new(post_params)
if @post.save
redirect_to @wall
end
end

def destroy
@post.destroy
end
private
def post_params
params.require(:post).permit(:wall, :content)
end
end

这是我的posts_controller_spec.rb:

require 'rails_helper'

describe PostsController do
let(:wall) { create(:wall) }

describe "#create" do
it "saves the new post in the wall" do
post :create, { wall_id: wall, content: "Some text I would like to put in my post" }
end
end

describe "#destroy" do
it "deletes the post in the wall" do
end
end
end

你能帮我更正我的 spec.rb 吗?这是我的错误:

帖子 Controller #创造 将新帖子保存在墙上(失败 - 1) #破坏 删除墙上的帖子

失败:

1) PostsController#create 在墙上保存新帖子 失败/错误:post :create, post: { wall: wall, content: "一些文字我想放在我的帖子中"} ActiveRecord::AssociationType 不匹配: 墙(#2159949860)预期,得到字符串(#2155957040) # ./app/controllers/posts_controller.rb:3:in create'
# ./spec/controllers/posts_controller_spec.rb:8:in
block (3 级)在 ' # -e:1:in `'

在 0.9743 秒内完成(文件加载时间为 3.94 秒)2个例子,1个失败

失败的例子:

rspec ./spec/controllers/posts_controller_spec.rb:7 # PostsController#create 将新帖子保存在墙上

提前致谢

最佳答案

您的规范不包含任何期望,因此从这个意义上说它是“错误的”。我建议你用谷歌搜索“RSpec expectations”和/或阅读文档(即 https://relishapp.com/rspec/rspec-expectations/docs )。

至于您在评论中提到的错误,这反射(reflect)了您的生产代码存在问题(即缺少 redirectrender 或某些 create 模板在 @post.save 返回 nil 的情况下)。同样,谷歌搜索错误应该会产生信息来帮助您解决这个问题,或者您可以阅读 http://guides.rubyonrails.org/layouts_and_rendering.html .如果您是 Rails 的新手,我建议您学习其中一个教程,例如 https://www.railstutorial.org/

您还应该更新您的问题以包含该错误信息,因为它具有高度相关性,没有它该问题基本上是不完整的。

关于ruby-on-rails - 创建一个后 Controller 规范测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28227641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com