ruby-on-rails - 测试方法是否返回 `non-null` 值

标签 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

最佳答案

您需要将 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 be(nil)
    end
  end
end

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

但是,如果您想更具体一些,您也可以使用另一个匹配器,例如“be_within”,或者在同一个测试中编写多个 expect 语句,例如“expect to be an integer”、“expect to be greater than 0” ' 等等...在“it” block 中可以包含的期望语句的数量没有限制,只有满足所有期望时测试才会通过。 (也就是说,我认为最佳做法是将其拆分为单独的测试。)

关于ruby-on-rails - 测试方法是否返回 `non-null` 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38753908/

相关文章:

javascript - 不会保存记录的属性

ruby-on-rails - 如何使用RSpec在一个对象上添加多个should_receive期望?

ruby-on-rails - 用户密码更新rspec

ruby-on-rails - 测试 View 编辑表单时 Rspec 失败

ruby-on-rails - 如何在heroku上使用postgres和rails

ruby-on-rails - 是否有可以从闪存驱动器运行的独立 Ruby(和 Rails)解决方案?

ruby-on-rails - ruby on rails 是如何工作的?

ruby-on-rails - 具有 Controller 条件的 Rails 布局渲染

ruby-on-rails - 不兼容的字符编码 : Windows-1252 and UTF-8 yml files

ruby-on-rails - Rails Controller 中实例变量的作用域是什么?