gpt4 book ai didi

ruby-on-rails - rails assert_redirect_to

转载 作者:行者123 更新时间:2023-11-28 19:54:15 26 4
gpt4 key购买 nike

路线.rb

  map.resources :places do |places|
places.resources :reviews
end

放置模型

class Place < ActiveRecord::Base
has_many :reviews
end

审查模型

class Review < ActiveRecord::Base
belongs_to :place
end

在我的评论 Controller 测试中,我有以下 assert_redirect_to 语句

assert_redirected_to place_review_path(assigns(:place), assigns(:review))

但功能测试失败并出现以下错误

  1) Failure:
test_should_create_review(ReviewsControllerTest) [/test/functional/reviews_controller_test.rb:24]:
Expected response to be a redirect to <http://test.host/places/980190962/reviews/980190963> but was a redirect to <http://test.host/places/980190962>.

2) Failure:
test_should_destroy_review(ReviewsControllerTest) [/test/functional/reviews_controller_test.rb:47]:
Expected response to be a redirect to <http://test.host/places/980190962/reviews.%23%3Creview:0xb74783a0%3E> but was a redirect to <http://test.host/places/980190962/reviews>.

3) Failure:
test_should_update_review(ReviewsControllerTest) [/test/functional/reviews_controller_test.rb:39]:
Expected response to be a redirect to <http://test.host/places/980190962/reviews/980190962> but was a redirect to <http://test.host/places/980190962>.

是什么导致了这个问题?

最佳答案

assert_redirect_to 正在按预期工作。相反,看起来您的 ReviewsController 正在重定向到意想不到的地方。 assert_redirected_to 似乎正常运行。你所有的失败都源于这样一个事实,即操作被重定向到的 url 与给定 assert_redirected_to 的 url 不匹配。

更具体地说:

  1. ReviewsController 正在重定向到 place_path(assigns(:place))。这与标准 Rails 工作流程不一致。断言需要 place_review_path(assigns(:place), assigns(:review))

  2. ReviewsController 正在重定向到 place_reviews_path(assigns(:place)),这与标准 Rails 工作流程一致。断言需要 place_review_path(assigns(:place), assigns(:review))。然而,因为 destroy 操作删除了 assigns(:review) 的 id,所以 place_review_path(assigns(:place), assigns(:review)) 将无法生成一个正确的 url 来解释奇怪的字符错误信息。

  3. ReviewsController 正在重定向到 place_path(assings(:place))。同样,这与标准 Rails 工作流程不一致。断言需要 place_review_path(assigns(:place), assigns(:review))

简短的版本是,除非您偏离了 Rails 约定,否则您的 Controller 列出的第一个和第三个故障将重定向到一个意想不到的地方。第二个失败的断言是错误的。

关于ruby-on-rails - rails assert_redirect_to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2098265/

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