2011-09-09 83 views
4

我为我的rails应用程序编写了一个Mysql函数,并且通过手动将它添加到我的数据库中。 当我想使用Rails的单元测试,它通过错误测试功能类似下面如何在rails测试数据库中创建mysql函数?

ActiveRecord::StatementInvalid: Mysql::Error: FUNCTION mydatabase.fn_Sample_Function does not exist: 

如何添加的功能,从试运行的测试套件或开始的?

在此先感谢, Aaa。

回答

1

我看不到错误。但我认为问题是您的架构格式。

config.active_record.schema_format = :sql 

in application.rb应该是你需要做的。

原因在于默认情况下,您的测试数据库不是由开发数据库的模式转储而是由db/schema.rb转换而来的,而不是db函数。

sql模式格式将会将模式唯一标志设置为true并创建一个development_structure.sql文件来执行mysqldump(或pg_dump)。

+0

感谢您的快速回答,我使用2.3.12版本。我不认为我们可以在application.rb文件中使用配置对象..请纠正我,如果我错了..我把它添加到enviroment.rb文件,但没有帮助.. – Jak

+0

好 - environment.rb是好的 - 做到了创建development_structure文件? –

+0

environment.rb是添加此配置的地方。请运行'rake db:schema:dump'以sql格式生成schema.rb,然后运行你的单元测试。 – dexter