gpt4 book ai didi

ruby-on-rails - 为一个没有路由的操作编写一个失败的测试,即使 Assets 管道打开

转载 作者:行者123 更新时间:2023-12-01 05:29:52 24 4
gpt4 key购买 nike

我在 Rails 3.2 上,启用了 Assets 管道。我正在测试我尚未构建的操作(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

当我添加相应的 View (app/views/my_path.html.erb)时,我仍然希望测试失败,因为我没有为此操作指定路由。但是它通过了,我认为这是因为页面正在由 Assets 管道呈现。在 View 中我调用 <%= request.fullpath %>然后吐出来 /assets?action=my_path来自 puts @response.body称呼。

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

最佳答案

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

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

关于ruby-on-rails - 为一个没有路由的操作编写一个失败的测试,即使 Assets 管道打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11830078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com