我该如何测试Rails Enums?

sun*_*eja 3 testing enums ruby-on-rails ruby-on-rails-4 rails-activerecord

假设我有一个名为CreditCard的模型.由于某些技术限制,最好将卡网络表示为枚举.我的代码看起来像这样:

class CreditCard < ActiveRecord::Base
   enum network: [:visa, :mastercard, :amex]
end
Run Code Online (Sandbox Code Playgroud)

使用枚举时应该测试什么?

Was*_*lho 8

如果您使用数组,则需要确保订单保持不变:

class CreditCard < ActiveRecord::Base
  enum network: [:visa, :mastercard, :amex]
end

describe CreditCard, '#status' do
  let(:network) { [:visa, :mastercard, :amex] }

  it 'has the right index' do
    network.each_with_index do |item, index|
      expect(described_class.statuses[item]).to eq index
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如果使用哈希,顺序无关紧要,但每个键的值都会.因此,确保每个键的数量相同,总是好的.