小编Van*_*Huy的帖子

如何检查Elixir中的字符串是否为空

我的意思是如果字符串为空或仅包含空格,则该字符串为空.例如""," "并且"\n"都是空白.

在Rails中,我们有.blank?方法.

Elixir(或凤凰框架)中有类似的东西吗?

elixir phoenix-framework

25
推荐指数
4
解决办法
2万
查看次数

使用shoulda-matchers检查枚举值时出错

在我的device模型中,我有

enum device_type: { ios: 1 , android: 2 }
validates :device_type, presence: true, inclusion: { in: device_types.keys }
Run Code Online (Sandbox Code Playgroud)

在我看来device_spec.rb,我为此写了一些测试

describe 'validations' do
  subject { FactoryGirl.build(:device) }

  it { is_expected.to allow_values('ios', 'android').for(:device_type) }
  it { is_expected.to validate_inclusion_of(:device_type).in_array(%w(ios android)) }
  it { is_expected.not_to allow_value('windows').for(:device_type) }
end
Run Code Online (Sandbox Code Playgroud)

当我运行rspec时,测试allow_values('ios', 'android')通过,但其余两个都失败了.

1)设备应确保在["ios","android"]中包含device_type

失败/错误:它{is_expected.to validate_inclusion_of(:device_type).in_array(%w(ios android))}

 ArgumentError:
   '123456789' is not a valid device_type
Run Code Online (Sandbox Code Playgroud)

2)设备不应允许将device_type设置为"windows"

失败/错误:{is_expected.not_to allow_value('windows').for(:device_type)}

 ArgumentError:
   'windows' is not a valid device_type
Run Code Online (Sandbox Code Playgroud)

"它不是有效的device_type"是正确的,但为什么这些测试失败了?

rspec ruby-on-rails shoulda

8
推荐指数
1
解决办法
693
查看次数