1

我在规范中有以下代码:

it 'should save some favorite locations' do
  user=FactoryGirl.create(:user)  # not adding anything

它似乎没有向数据库写入任何内容。FactoryGirl 是否打算在模型规范中写一些东西?如果我从 rails 控制台运行,它确实会添加到数据库中。为什么 rspec 中的测试没有运行这个?这就是它的预期工作方式吗?

谢谢

4

1 回答 1

6

如果您已将 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
于 2012-09-01T03:47:00.520 回答