首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该如何测试Rails Enum?

我应该如何测试Rails Enum?
EN

Stack Overflow用户
提问于 2015-04-09 23:45:46
回答 2查看 4.7K关注 0票数 5

假设我有一个名为CreditCard的模型。由于一些技术上的限制,最好将卡片网络表示为enum。我的代码如下所示:

代码语言:javascript
复制
class CreditCard < ActiveRecord::Base
   enum network: [:visa, :mastercard, :amex]
end

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-18 21:08:46

如果使用数组,则需要确保订单将被保留:

代码语言:javascript
复制
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

如果您使用哈希,顺序并不重要,但是每个键的值都会。因此,确保每个键都具有等效值是很好的。

票数 10
EN

Stack Overflow用户

发布于 2015-04-10 23:58:31

根据用于枚举的Rails文档,数组的每个值都对应于一个整数。我猜您希望测试网络数组始终保持其相同的顺序。如果您使用的是rspec,您可以这样做:

代码语言:javascript
复制
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:我正在用我的手机写信,也许你需要一些调整才能运行

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29550958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档