Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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的测试_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

Ruby on rails 定义需要两个步骤才能通过rspec的测试

Ruby on rails 定义需要两个步骤才能通过rspec的测试,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,有更好的方法吗 describe '#reset_all' do it 'should reset foo for all objects' do manager.iterate_all manager.reset_all obj1.foo.should == 0 obj2.foo.should == 0 end end 这看起来很混乱,因为第二行“should==”给了我一个“在void上下文中无用地使用==”的语法警告,如果两个需求都失败了,我也只会

有更好的方法吗

describe '#reset_all' do
  it 'should reset foo for all objects' do
    manager.iterate_all
    manager.reset_all
    obj1.foo.should == 0
    obj2.foo.should == 0
  end
end
这看起来很混乱,因为第二行“should==”给了我一个“在void上下文中无用地使用==”的语法警告,如果两个需求都失败了,我也只会得到一个错误。但这似乎还不够重要,无法单独进行测试

你可以用

(obj1.foo == 0 && obj2.foo == 0).should be_true
或与

[obj1, obj2].all?{|o| o.foo == 0}.should be_true

对于一个测试用例,报告多个故障基本上是不可能的。

foo是应该等于0的整数吗?它还可能有助于提供更多的上下文,以了解您要测试的内容。一般来说,每个测试用例可以有多个断言。