如何为RSpec测试创建临时DataMapper模型?

时间:2013-02-22 01:09:28

标签: ruby rspec datamapper

我想在这些行中仅在RSpec测试期间创建一个DataMapper模型。但是如何在RSpec测试中创建底层的temp_models表?

require 'spec_helper'

class TempModel
  include DataMapper::Resource
  property :id, Serial
  property :foo, String
end

describe "MyTests" do
  before(:all) do
    # what goes here to create the table and finalize the model?
  end
  after(:all) do
    # what goes here to drop the table?
  end
  before(:each) do
    TempModel.destroy!
  end

  it 'creates a TempModel' do
    expect { TempModel.create(:foo => "yowza")}.to_not raise_error
  end
end

所以,就像代码所说的那样,我在before(:all)块中放置什么来在db中创建表并创建DataMapper模型?并在after(:all)块中删除表格?

更新

或者,如何创建“本地迁移”并对其进行上下移动?

1 个答案:

答案 0 :(得分:0)

我挖掘了各种来源,并尝试提出这个解决方案。如果有人对此有所改进,请告诉我:

require 'spec_helper'

class TempModel
  include DataMapper::Resource
  property :id, Serial
  property :foo, String
end

describe "MyTests" do
  before(:all) do
    DataMapper.auto_upgrade!
    TempModel.finalize
  end
  after(:all) do
    adapter = DataMapper.repository(:default).adapter
    adapter.execute("DROP TABLE #{TempModel.storage_name}")
  end
  before(:each) do
    TempModel.destroy!
  end

  it 'creates a TempModel' do
    expect { TempModel.create(:foo => "yowza")}.to_not raise_error
  end
end