假设我有一个名为CreditCard的模型。由于一些技术上的限制,最好将卡片网络表示为enum。我的代码如下所示:
class CreditCard < ActiveRecord::Base
enum network: [:visa, :mastercard, :amex]
end在使用枚举时,应该测试什么?
发布于 2015-06-18 21:08:46
如果使用数组,则需要确保订单将被保留:
class CreditCard < ActiveRecord::Base
enum network: %i[visa mastercard amex]
end
RSpec.describe CreditCard, '#status' do
let!(:network) { %i[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如果您使用哈希,顺序并不重要,但是每个键的值都会。因此,确保每个键都具有等效值是很好的。
发布于 2015-04-10 23:58:31
根据用于枚举的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:我正在用我的手机写信,也许你需要一些调整才能运行
https://stackoverflow.com/questions/29550958
复制相似问题