测试方法是否返回“非null”值

时间:2016-08-03 21:25:31

标签: ruby-on-rails ruby rspec

我测试我的方法populate()是否返回非空值(它会返回一个整数> 0),但是要正确编写它会有麻烦。我有:

describe House::Room do
  describe '.populate' do
    let(:info) {
      $info = {"people"=>
                        {"name"=>"Jordan",
                         "last_name"=>"McClalister"}}
              }
    it 'should return an integer > 0' do
      expect(House::Room.populate(info)).not_to eq(nil)
    end
  end
end

1 个答案:

答案 0 :(得分:1)

您需要将let分配更改为:

describe House::Room do
  describe '.populate' do
    let(:info) {"people"=>
                        {"name"=>"Jordan",
                         "last_name"=>"McClalister"}
               }
    it 'should return an integer > 0' do
      expect(House::Room.populate(info)).not_to eq(nil)
    end
  end
end

这应该使您的代码按预期工作。

但是,您也可以使用其他匹配器,例如' be_within'如果你想更具体,或者在同一个测试中写几个期望陈述,比如'期望是一个整数','期望大于0'等...您可以在'它中拥有的期望陈述数量没有限制。阻止,测试只会通过所有的期望是匹配的。 (也就是说,我认为最佳做法是将其分解为单独的测试。)