繁体   English   中英

rspec首先运行哪个? spec_helper.rb或db:test:prepare

[英]Which one does rspec run first? spec_helper.rb or db:test:prepare

我正在尝试对错误的database.yml配置实施附加检查。 在我们的配置中,我们遵循rails database.yml约定,该约定基本上是在数据库名称中添加“ _#{env}”后缀。 我们在另一个项目(不是Rails)上发生了一个事件,在此项目中有人忘记了在运行单元测试之前切换数据库,这导致我们在登台环境中丢失数据。 我们通过添加一个简单的检查来破解一种变通方法,即:如果数据库名称不以“ _test”结尾,请不要擦除它,也不要对其进行单元测试。

那么对rails执行此检查的正确方法是什么。 我认为可以在spec_helper.rb中做到这一点,但是当我更改数据库名称后运行测试时,并没有抛出我编写的错误消息,而是抛出了错误:

TinyTds::Error: Database 'some_db_name' does not exist. Make sure that the name is entered correctly.

这意味着,它在加载spec_helper.rb之前已连接到数据库。 我找不到有关何时执行db:test:prepare的任何信息,也没有勇气使用不带“ _test”后缀的现有数据库对其进行测试。

有没有我可以使用的钩子?

包括在您的spec_helper.rb中

ENV["RAILS_ENV"] = 'test'

rspec测试行应在测试环境中运行,以查找测试数据库连接字符串,因此始终在测试数据库中运行。 对其他人没有任何问题,不同的环境数据库

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM