我想为集成测试设置一些数据库状态。我的基本设置如下所示:
describe "some behaviour" do
before(:each) do
<setup some mock objects with stubs>
<call the database set up script>
end
end
- 设置模拟自然属于 a
before(:each)
,示例取决于模拟。 - 数据库设置脚本很慢,所以我只想调用一次。
- 进行集成测试的过程的一部分是数据库设置脚本。虽然我可以更改脚本以使其更易于测试,但我无法删除它对模拟状态的依赖。
- 必须在设置模拟之后调用数据库设置,因为它依赖于它们。例如,一些模拟返回数据库设置脚本需要放入数据库记录的标识符。
所以我真的想把数据库设置放在一个before(:all)
. before(:all)
导致设置在之前运行,before(:each)
所以我看不到如何满足所有要求。
我试图将模拟的设置拆分为一个辅助函数,我将其称为 和 中的第一个before(:all)
调用before(:each)
。rspec 不允许在before(:all)
块中创建双打,所以这不起作用。
有没有办法只运行一次慢速数据库设置,但仍然有可用的模拟?