我正在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一起使用)