首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

rake测试fixtures数据加载有关

2012-12-23 
rake测试fixtures数据加载相关在rails中执行rake测试时,测试数据是在app_name\test\fixtures中准备好的(基

rake测试fixtures数据加载相关

在rails中执行rake测试时,测试数据是在app_name\test\fixtures中准备好的(基本上和app_name\app\models中的model是对应的)。

那么在执行rake命令时,fixtures中的数据是怎样加载的呢?

?

1、加载时间:

①执行rake命令:

? [12:34:30 root@rap app_name]$rake --trace?

或者 (只测试units部分)

? [12:34:30 root@rap app_name]$rake test:units --trace?

或者 (只测试functionals部分)

? [12:34:30 root@rap app_name]$rake test:functionals --trace?

?

②在执行rake测试命令后:

?? 首先,rails会清空app_name\config\database.yml中test区段配置的数据库;

?? 然后,rails会将database.yml中development区段所配置数据库中的所有表结构导入至test区段配置的数据库;

?? 然后,rails准备好测试数据库的数据结构后,rake命令开示执行具体的测试case;

?? 然后,在rake命令执行某个测试文件时,如果发现文件中如下类似的代码时:

...省略...
fixtures :modelones, :modeltwos, :modelthrees
...省略...

?????????? 那么,rails就向测试数据库中开始导入fixtures目录中的modelones.yml,modeltwos.yml,modelthrees.yml数据了。

?

?③在执行rake测试过程中所有具体测试case对测试数据库的增删改操作都是即时的,不会被commit的;

??? 也就是说具体测试case对测试数据库的增删改操作完成后都是被回滚的。

??? 因此在执行完rake测试后你会发现测试数据库中的数据和fixtures目录中准备的数据一模一样。

?

④最后需要注意的一点是:

?? 如果只是按照命令执行某一个测试case↓时,会直接利用现有测试数据库数据,而不会去清空数据库然后再重新导入。

? [12:34:30 root@rap app_name]$ruby test/unit/filename -n testcasename

? [12:34:30 root@rap app_name]$ruby test/functional/filename -n testcasename

?

?

热点排行