作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想我已经介绍了使用查询参数测试路由的排列组合,但没有一种方法通过。
在我的 routes.rb 中,我有以下内容:
resources :items
然后对于我的功能测试,我有:
require 'ruby-debug'
require 'test_helper'
class ItemsControllerTest < ActionController::TestCase
# Failure: test_assert_generates_using_params_and_extras(ItemsControllerTest) [test/functional/items_controller_test.rb:7]: The generated path <"/items/1/edit"> did not match <"/items/1/edit?q=abc">
test "assert_generates using params and extras" do
assert_generates '/items/1/edit?q=abc',
{ :controller => 'items', :action => 'edit', :id => '1', :q => 'abc' },
{},
{ :q => 'abc' }
end
# Failure: test_assert_generates_using_only_params(ItemsControllerTest) [test/functional/items_controller_test.rb:15]: found extras <{:q=>"abc"}>, not <{}>
test "assert_generates using only params" do
assert_generates '/items/1/edit?q=abc',
{ :controller => 'items', :action => 'edit', :id => '1', :q => 'abc' }
end
# Failure: test_assert_generates_using_using_only_extras(ItemsControllerTest) [test/functional/items_controller_test.rb:21]: found extras <{}>, not <{:q=>"abc"}>
test "assert_generates using using only extras" do
assert_generates '/items/1/edit?q=abc',
{ :controller => 'items', :action => 'edit', :id => '1' },
{},
{ :q => 'abc' }
end
# Failure: test_assert_routing_using_params_and_extras(ItemsControllerTest) [test/functional/items_controller_test.rb:29]: The generated path <"/items/1/edit"> did not match <"/items/1/edit?q=abc">
test "assert_routing using params and extras" do
assert_routing '/items/1/edit?q=abc',
{ :controller => 'items', :action => 'edit', :id => '1', :q => 'abc' },
{},
{ :q => 'abc' }
end
# Failure: test_assert_routing_using_only_params(ItemsControllerTest) [test/functional/items_controller_test.rb:37]: found extras <{:q=>"abc"}>, not <{}>
test "assert_routing using only params" do
assert_routing '/items/1/edit?q=abc',
{ :controller => 'items', :action => 'edit', :id => '1', :q => 'abc' }
end
# Failure: test_assert_routing_using_using_only_extras(ItemsControllerTest) [test/functional/items_controller_test.rb:43]: found extras <{}>, not <{:q=>"abc"}>
test "assert_routing using using only extras" do
assert_routing '/items/1/edit?q=abc',
{ :controller => 'items', :action => 'edit', :id => '1' },
{},
{ :q => 'abc' }
end
end
我本以为 *_using_params_and_extras 测试会通过 - 我错过了什么?
最佳答案
也许您已经明白了这一点。我今天遇到了同样的问题,直到我发现了这个问题,注意到了额外选项的存在,最后再次阅读了 assert_routing 的文档。您必须从 url 中删除 q=abc 并将其同时放入 extras 哈希和选项哈希中。
所以尝试这样的事情:
assert_routing(
'items/1/edit',
{:controller => 'items', :action => 'edit', :id => '1', :q => 'abc'},
{},
{:q => 'abc'}
)
关于ruby-on-rails - 查询参数和 assert_generates/assert_routing - 我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6665743/
我想我已经介绍了使用查询参数测试路由的排列组合,但没有一种方法通过。 在我的 routes.rb 中,我有以下内容: resources :items 然后对于我的功能测试,我有: require '
我有一个路由,我使用约束来检查主机,然后是一个基本相同但没有主机限制的路由(这些实际上是命名空间,但为了使事情变得简单,这个例子会做): match "/(:page_key)" => "names
我是一名优秀的程序员,十分优秀!