1

これらの線に沿って、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)、テーブルをドロップするブロックで?

アップデート

または、「ローカル移行」を作成して、その上と下を実行するにはどうすればよいですか?

4

1 に答える 1

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
于 2013-02-23T20:33:20.537 に答える