Ruby on rails 我应该如何测试Rails枚举?
假设我有一个叫信用卡的模型。由于一些技术限制,最好将卡网络表示为枚举。我的代码如下所示:Ruby on rails 我应该如何测试Rails枚举?,ruby-on-rails,ruby-on-rails-4,testing,enums,rails-activerecord,Ruby On Rails,Ruby On Rails 4,Testing,Enums,Rails Activerecord,假设我有一个叫信用卡的模型。由于一些技术限制,最好将卡网络表示为枚举。我的代码如下所示: class CreditCard < ActiveRecord::Base enum network: [:visa, :mastercard, :amex] end class信用卡
class CreditCard < ActiveRecord::Base
enum network: [:visa, :mastercard, :amex]
end
class信用卡
使用枚举时应该测试什么?根据Rails文档,数组的每个值都对应一个整数。我猜您想测试网络阵列是否始终保持相同的顺序。如果您正在使用rspec,您可以执行以下操作:
describe 'CreditCard' do
let(:network_values) do
{ visa: 0,
master: 1
# etc
}
end
subject { described_class.new }
it 'has valid a network' do
network_values.each do |type, value|
subject.network = value
subject.save
expect(subject.network).to eql(type.to_s)
end
end
end
ps:我在用手机写信,也许你需要一些调整才能运行如果你使用array,你需要确保订单将被保留:
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
class信用卡
如果使用散列,则顺序无关紧要,但每个键的值将无关紧要。因此,确保每个键都有相同的数字对用户总是有好处的。我也有同样的问题,我不喜欢这个解决方案,因为它只是测试Rails已经测试的内容。然而,你已经充分回答了我的问题,也许根本没有什么需要测试的:)。是的,我同意你的看法。我认为也许你根本不需要测试它,只需要测试更复杂的部分。