Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 检查属性在RSpec中是否包含2个字母_Ruby On Rails_Ruby On Rails 3_Rspec_Rspec2_Rspec Rails - Fatal编程技术网

Ruby on rails 检查属性在RSpec中是否包含2个字母

Ruby on rails 检查属性在RSpec中是否包含2个字母,ruby-on-rails,ruby-on-rails-3,rspec,rspec2,rspec-rails,Ruby On Rails,Ruby On Rails 3,Rspec,Rspec2,Rspec Rails,如果字段包含带RSpec的2个字母字符串,那么正确的测试方法是什么?我遵循的是一个在rails 2中工作的老例子。它创建新的地址实例,在其上设置无效值,然后在该实例上触发有效?,最后检查错误是否报告错误 it 'requires state to be of length 2' do subject = Address.new subject.state = 'Cal' should_not be_valid subject.errors.on

如果字段包含带RSpec的2个字母字符串,那么正确的测试方法是什么?我遵循的是一个在rails 2中工作的老例子。它创建新的
地址
实例,在其上设置无效值,然后在该实例上触发
有效?
,最后检查
错误
是否报告错误

  it 'requires state to be of length 2' do
      subject = Address.new
      subject.state = 'Cal'
      should_not be_valid
      subject.errors.on(:state).should_not be_nil
    end
现在,Rails 3没有错误。on,所以我尝试了

subject.errors[:state].should_not be_nil

但是这里的问题是,
errors[:attribute]
是空的
Array
而不是
nil
验证错误现在位于
errors中。消息

errors.messages.should be_present
你仍然可以说

subject.errors[:state].should_not be_empty

这很有效,谢谢。只有一个问题,在你看来,有没有更好的方法来测试这个?你可以使用shoulda验证助手<代码>它{应该不允许值(“Cal”)。对于(:state)}