ruby-on-rails - 这是什么意思? *** "Delete"参数 ":destroy,"

我正在尝试运行以下测试以销毁模型对象。

这是其中一个测试:

  it 'admin destroy' do
    login_as(admin)
    assert_difference('Topic.count', -1) do
      debugger;
      delete :destroy, id: topic.id
    end
    must_redirect_to forums_path
  end

此测试未能销毁主题模型对象。放置调试器;在鳕鱼中产生这个;

这是什么'Delete argument destroy needs to be a number?'

我的论坛破坏了完美的测试工作。我不明白问题出在哪里。有谁知道这是什么意思。我在谷歌上放置了确切的错误,但它导致了一堆带有破坏参数错误问题的链接。帮助将不胜感激,谢谢。

--------编辑------------

*在我的 controller_test 文件的顶部,如果有人想知道的话,我让 FactoryGirl 的 let(:topic) { create(:topic) }

最佳答案

您的测试失败,因为您的主题对象是在首次引用 topic 时创建的,即在 assert_difference block 内:总体计数不会改变,因为主题同时创建并在 block 内销毁,因此净差为 0。

如果您将 let 更改为 let!,那么主题将更早创建并且您的测试应该通过。

您在 byebug 控制台的问题是因为 byebug 认为您正在尝试执行 byebug 的 delete 命令(删除断点)。您可以使用 e 命令强制将您输入的内容评估为 ruby​​ 代码。

关于ruby-on-rails - 这是什么意思? *** "Delete"参数 ":destroy,"需要是一个数字 (Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28224930/

相关文章:

python - 如何在 Django 中用阿拉伯字符创建 slug?

Python3 - 字符串的最后一个字符

xml - 使用 XSD 验证 XML 中的自定义日期和时间

jsf - 在 Facelets 中有条件地添加 HTML 元素属性

html - 添加颜色和图像以填充 SVG 圆圈

jakarta-ee - 如何进行 payara netbeans 集成

interface - 用 UML 表示/说明两个独立程序之间的通信?

cmake - 配置 CLion、Cmake 和 SFML 的问题

c# - 如何在 Windows Phone 8.1 中更改内容对话框的标题样式

android - 为警报对话框项设置自定义字体的字体