我如何使用expect来测试低于

时间:2017-02-15 23:48:04

标签: ruby rspec

Relish建议以下......

expect(actual).to be <  expected

但是,如果我尝试......

 x.rand(10)
 expect(x).to be < 11 

完整规格

Then(/^I find each world produces just up to (\d+) fighters per turn and no higher$/) do |arg1|
    test = Planet.new
    test.production.each_index do |ndx|
       expect(test.production[ndx]).to be < 11
    end
  end

我会

undefined method `<' for #<RSpec::Matchers::BuiltIn::BePredicate:0x0000000268a3b0> (NoMethodError)

在比较比较的情况下,使用expect的当前正确语法是什么?

2 个答案:

答案 0 :(得分:1)

语法看起来不错。我会首先制作一个非常小的简单规范,独立于您的代码,看看您的设置是否有效。例如(它应该失败btw;):

describe 'test' do
  it 'works' do
    expect(2).to be < 1
  end
end

答案 1 :(得分:1)

查看rspec-expectations的源代码,它应该返回

RSpec :: Matchers :: BuiltIn ::不是RSpec :: Matchers :: BuiltIn :: BePredicate

你有可能be_?这将返回以下虚拟测试中的RSpec :: Matchers :: BuiltIn :: BePredicate

loadToJSON()

输出

describe 'test' do
  it 'works' do
    puts "be is a #{be.class}"
    puts "be_ is a #{be_.class}"

    puts "be is defined on #{method(:be)}"
    expect(2).to be_ < 1
  end
end

或许可以重新定义be方法吗?