Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我可以在不提供显式外键的情况下测试嵌套资源吗?_Ruby On Rails_Fixtures_Testunit - Fatal编程技术网

Ruby on rails 我可以在不提供显式外键的情况下测试嵌套资源吗?

Ruby on rails 我可以在不提供显式外键的情况下测试嵌套资源吗?,ruby-on-rails,fixtures,testunit,Ruby On Rails,Fixtures,Testunit,我正在尝试修复嵌套资源的功能测试。我的config/routes.rb文件如下所示: Shop360::Application.routes.draw do resources :libraries do resources :library_imports end end setup do @library_import = library_imports(:import1) end 嵌套library\u importsresources会中断生成的测试,如下所示:

我正在尝试修复嵌套资源的功能测试。我的
config/routes.rb
文件如下所示:

Shop360::Application.routes.draw do

  resources :libraries do
    resources :library_imports
  end
end
setup do
  @library_import = library_imports(:import1)
end
嵌套
library\u imports
resources会中断生成的测试,如下所示:

test "should get index" do
  get :index
  assert_response :success
  assert_not_nil assigns(:library_imports)
end
因为嵌套会更改所有URL

我在几个地方看到了通过添加
library\u id
参数来解决此问题的建议,如下所示:

test "should get index" do
  get :index, :library_id => 1
  assert_response :success
  assert_not_nil assigns(:library_imports)
end
(第二行已更改)

因此,为了使其正常工作,我必须在我的库导入装置中明确指定一个
库id
?自Rails 2.0以来,可以在夹具数据中定义关联,而无需借助这些显式键定义。我现在被迫回到这个老鼠窝里是因为我在筑巢吗


没有更好的方法让我的测试通过吗?

您是否尝试过在fixture文件中定义关系

# fixtures/libraries.yml
philly:
  name: Free Library

# fixtures/library_imports
last_import:
  library: philly

好吧,这并不像我想的那么复杂。让我们从设备开始:

图书馆.yml

lib1:
  name: lib1
  description: Library one

lib2:
  name: lib2
  description: Library two
library_imports.yml

import1:
  name: import1
  description: Import one
  library: lib1

import2:
  name: import2
  description: Import two
  library: lib2
我以正确的方式在此装置数据中创建关联(即,没有显式键)

现在,回想一下失败的测试(在library\u imports\u controller\u test.rb中):

此文件顶部是安装回调,如下所示:

Shop360::Application.routes.draw do

  resources :libraries do
    resources :library_imports
  end
end
setup do
  @library_import = library_imports(:import1)
end
所以我可以在测试中引用@library\u import(特别是它的library\u id字段)。我这样改变它:

test "should get index" do
  get :index, :library_id => @library_import.library_id
  assert_response :success
  assert_not_nil assigns(:library_imports)
end
我的测试从红色变为绿色