Ruby on rails Rails v6.0,新应用程序--scaffold在安装时生成控制器测试错误
我正在使用Ruby on rails Rails v6.0,新应用程序--scaffold在安装时生成控制器测试错误,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在使用rails6.0.3.2和Ruby 2.7.1.p83为一个新的应用程序构建一个数据支架。创建应用程序后,我通过命令行生成了一系列约60个框架,每个框架都有一个“名称”(字符串)字段 railsdb:migrate没有问题。当我调用rails测试时,527个断言中有2个失败。两者都是“行为”控制器中的nomethoderror(缺少count方法) 这只发生在60个ish支架中的1个,这意味着(在这一点上)建造相同 这绝对是出乎意料的。有人见过这个吗 来自rails测试的错误消息: 您
rails6.0.3.2和Ruby 2.7.1.p83
为一个新的应用程序构建一个数据支架。创建应用程序后,我通过命令行生成了一系列约60个框架,每个框架都有一个“名称”(字符串)字段
railsdb:migrate
没有问题。当我调用rails测试时,527个断言中有2个失败。两者都是“行为”控制器中的nomethoderror
(缺少count
方法)
这只发生在60个ish支架中的1个,这意味着(在这一点上)建造相同
这绝对是出乎意料的。有人见过这个吗
来自rails测试的错误消息:
您选择的名称与Rails内置对象冲突:
行为
有一个模块叫做
测试(大概)是在ActionDispatch::IntegrationTest
模块中定义的方法中进行评估的,因此Ruby的常量查找会在遍历到顶级常量之前找到ActionDispatch::IntegrationTest::Behavior
您需要使用范围解析运算符(:
)来引用顶级常量:
assert_difference('::Behavior.count') do
post behaviors_url, params: { behavior: { name: @behavior.name } }
end
请添加相关测试的代码片段、测试类和错误日志,请将代码片段粘贴到问题中。另外,你能粘贴失败的测试片段吗?“Behavior”是我正在构建的对象的一个任意名称,重命名它是(稍微)更简单的方法。我启动了一个独立的Rails 6.0.2.3应用程序,生成了一个“行为”框架,并重新运行了
Rails测试。同样的错误。非常感谢您指出ActionDispatch::IntegrationTest::Behavior角度。
test "should create behavior" do
assert_difference('Behavior.count') do
post behaviors_url, params: { behavior: { name: @behavior.name } }
end
assert_redirected_to behavior_url(Behavior.last)
end
test "should destroy behavior" do
assert_difference('Behavior.count', -1) do
delete behavior_url(@behavior)
end
assert_redirected_to behaviors_url
end
assert_difference('::Behavior.count') do
post behaviors_url, params: { behavior: { name: @behavior.name } }
end