加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 为没有路由的动作写一个失败的测试,即使打开了

发布时间:2020-12-17 02:02:26 所属栏目:百科 来源:网络整理
导读:我在轨道3.2上打开资产管道.我正在测试我还没有构建的动作(TDD;试图让测试先失败).当我最初运行测试时,我按预期失败了. class AccountsControllerTest ActionController::TestCase def test_my_path get :my_path puts @response.body assert_template :my_p
我在轨道3.2上打开资产管道.我正在测试我还没有构建的动作(TDD;试图让测试先失败).当我最初运行测试时,我按预期失败了.

class AccountsControllerTest < ActionController::TestCase

  def test_my_path
    get :my_path
    puts @response.body
    assert_template :my_path
  end

end

#=> test_my_path(AccountsControllerTest): AbstractController::ActionNotFound: The action 'my_path' could not be found for AccountsController

当我添加相应的视图(app / views / my_path.html.erb)时,我仍然期望测试失败,因为我没有为此操作指定路由.它通过了,我认为这是因为页面是由资产管道呈现的.在视图中,我调用<%= request.fullpath%>并且从puts @ response.body调用中吐出/ assets?action = my_path.

当我尝试在浏览器中访问accounts / my_path时,我看到“No route matches [GET]”/ accounts / my_path“”,所以我想确保我的测试也失败了.为什么会发生这种情况?我应该如何修复测试?我应该用assert_recognizes分别测试路由吗?为了缩小问题的根源,我的路线文件当前是空的.

解决方法

首先,即使没有定义相应的动作,Rails控制器也会呈现现有模板( http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-by-default-convention-over-configuration-in-action).这就是您添加模板后测试通过的原因.

功能测试直接调用控制器操作,不通过路由器.因此,即使未定义路由,测试也会通过,并且在浏览器中不起作用.使用单独的测试用例进行路由测试(或集成测试中的测试路由).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读