Rspec - 模型测试,然后设置模型

时间:2015-09-01 01:10:55

标签: ruby-on-rails rspec

我正在尝试一些非常常见的东西我认为但由于交易示例,我无法做到这一点。

这是我想要做的事情

class A < ActiveRecord::Base
  has_many :b
end

class B < ActiveRecord::Base
 belongs_to :a
end

对于测试用例

describe A do
  before(:all) do
    @a = Factory.create :a
    @a.b.create()
    # Lot of other things which is common to all example
  end

  it { expect state_one(@a) }
  it { expect state_two(@a)  }
end

我要做的是在前一部分中为测试设置所有前提条件,并且每个示例只有一个期望。问题是在示例的上下文中,表A或B中都没有行。

请告诉我这是否是正确的方法,如果是的话我该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以进行如下设置:

  describe A do
    subject do
      create(:a).tap do |a|
        create(:b, a: a)
      end
    end

    before(:all) do
      # Lot of other things which is common to all example
    end

    context 'state_one' do
      it { expect state_one(@a) }
    end

    context 'state_two' do
      it { expect state_two(@a)  }
    end
  end

假设您有ab的工厂并正确设置他们的关联。