Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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 使用Rails进行功能测试时在多个表中创建记录时出现的问题_Ruby On Rails_Ruby_Postgresql_Testing - Fatal编程技术网

Ruby on rails 使用Rails进行功能测试时在多个表中创建记录时出现的问题

Ruby on rails 使用Rails进行功能测试时在多个表中创建记录时出现的问题,ruby-on-rails,ruby,postgresql,testing,Ruby On Rails,Ruby,Postgresql,Testing,我正在尝试在Rails 3.2.3项目中执行默认功能测试。当我这样做时,我多次出现如下错误: || test_should_create_food_item(FoodItemsControllerTest): || ActiveRecord::InvalidForeignKey: PG::Error: ERROR: insert

我正在尝试在Rails 3.2.3项目中执行默认功能测试。当我这样做时,我多次出现如下错误:

|| test_should_create_food_item(FoodItemsControllerTest):                                                                                   
|| ActiveRecord::InvalidForeignKey: PG::Error: ERROR:  insert or update on table "food_items" violates foreign key constraint "food_items_us
我的食物项目记录有一个外键,指向用户表中的用户id

据我所知,Rails在每次调用测试方法时都会创建和销毁“测试”数据库中的测试数据。如果这是真的,那么这个错误是有意义的,因为当记录被插入到food_items表中时,users表将是空的

下面是我为解决这个问题所做的努力。首先,我确保相关模型具有适当的has\u many,并属于章节

接下来,我在food_items_controller_test.rb中的设置函数中添加了以下内容:

setup
  do                                                                                                                                  
> @user = users(:one)                                                                                                                     
  @food_item = food_items(:one)                                                                                                           
end
我还尝试将@user调用添加到各个测试中,但没有任何区别

在我执行“食品”\u“项目”\u“控制器”\u“测试”中的功能测试之前,我还可以做些什么来创建用户记录

另外,如果可能的话,我宁愿不关闭“test”数据库中的DB约束

是,您可以在执行食品项目控制器测试中的功能测试之前创建用户记录