Ruby On Rails:测试删除表

时间:2010-08-02 14:10:13

标签: mysql ruby-on-rails ruby unit-testing

我正在RoR中创建一个应用程序,我正在所有模型中实现单元测试。

当我自己运行每个测试时(通过运行ruby test / unit / some_test.rb),所有测试都成功。

但是,当我一起运行所有测试(通过运行rake测试:单位)时,两个数据库中的一些表(开发e测试)将被删除。

我正在使用原始SQL(mysql)创建表,因为我需要复合主键和物理约束,所以我认为它是最好的。也许这就是原因?

我所有的测试都采用以下形式:

  

需要File.dirname(文件)+'/../test_helper'   需要File.dirname(文件)+'/../../ app / models / order'

     

class OrderTestCase<测试::单位::测试用例

     

def setup

@order = Order.new(
    :user_id => 1,
    :total => 10.23,
    :date => Date.today,
    :status => 'processing',
    :date_concluded => Date.today,
    :user_address_user_id => 3,
    :user_address_address_id => 5,
    :creation_date => Date.today,
    :update_date => Date.today
  )
     

结束

     

################ Happy Path

     

def test_happy_path

     

断言@ order.valid?,@ order.errors.full_messages

     

端   ...

运行测试时得到的错误是这样的:

3)错误: test_empty_is_primary(AddressTestCase): ActiveRecord :: StatementInvalid:Mysql :: Error:表'shopshop_enterprise_test.addresses'不存在:显示来自addresses的字段     /test/unit/address_test.rb:9:in new' /test/unit/address_test.rb:9:in setup'

任何猜测? 谢谢!

PS:当使用postgres作为数据库引擎时,一切都可以正常使用rake测试:单位! (当然,正确的更改使sql语句可以与postgres一起使用)

0 个答案:

没有答案