我在规范中有以下代码:
it 'should save some favorite locations' do
user=FactoryGirl.create(:user) # not adding anything
它似乎没有向数据库写入任何内容。FactoryGirl 是否打算在模型规范中写一些东西?如果我从 rails 控制台运行,它确实会添加到数据库中。为什么 rspec 中的测试没有运行这个?这就是它的预期工作方式吗?
谢谢
我在规范中有以下代码:
it 'should save some favorite locations' do
user=FactoryGirl.create(:user) # not adding anything
它似乎没有向数据库写入任何内容。FactoryGirl 是否打算在模型规范中写一些东西?如果我从 rails 控制台运行,它确实会添加到数据库中。为什么 rspec 中的测试没有运行这个?这就是它的预期工作方式吗?
谢谢
如果您已将 rspec 配置为对每个测试使用数据库事务,或使用数据库截断,则创建的任何记录都将回滚或销毁。
要检查它是否真的添加了一些东西,你可以尝试:
it 'should save some favorite locations' do
user=FactoryGirl.create(:user) # not adding anything
User.find(user.id).should_not be_nil # ensure it is in database
如果通过,则将其添加到数据库中。
如果您在测试中使用数据库事务,则每次测试后都会回滚数据库。如果您需要使用在多个测试中创建的记录,您可以使用:
before(:all) do
@user=FactoryGirl.create(:user)
end
after(:all) do
@user.destroy # with create in before(:all), it is not in a transaction
# meaning it is not rolled back - destroy explicitly to clean up.
end