我正在尝试运行以下测试以销毁模型对象。
这是其中一个测试:
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/