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

标签 ruby-on-rails ruby testing rspec controller

我正在进行 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/

相关文章:

ruby-on-rails - 如何在 Rails 3.2 中应用自动增量

ruby - 如何将 Nokogiri Document 对象转换为 JSON

ruby-on-rails - 如何在 Ruby 中动态打开一个方法

unit-testing - 如何对使用插件方法的 grails 服务进行单元测试?

ruby-on-rails - 绝对测试所有内容是一种好习惯还是浪费时间(Rails)?

regex - 如何使用 Perl 递归正则表达式

sql - 获取有参数但没有其他参数的用户

javascript - 如何在 Rails 出价中实现卖家可以在 24 小时内取消或接受或交易被取消的出价?

ruby-on-rails - 测试多态注释 Controller Rspec 中的创建操作 - 未定义方法 `comments' 为 nil :NilClass

ruby-on-rails - rails 上的 ruby 。 bundler 。 cucumber 。 rake 中止!命令失败,状态为 (1)