为什么在检查at_exit钩子时未定义的方法`expect'

时间:2018-01-17 11:29:21

标签: ruby rspec cucumber

我试图通过以下代码检查命令的exitstatus。它导致错误--->未定义的方法'expect'

require 'rspec'
require 'rspec/expectations'

at_exit do

 \`cat /etc/redhat-release\`

  expect($?.exitstatus).to eq(0)

end

任何人都可以帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

您的代码假设是基于rspec的测试用例,并且您将它与普通的ruby代码混合使用。

为了使用rspec测试代码,您需要将测试场景和案例包含在describeit块中,然后您才能访问expect方法,像这样:

# test.rb
require 'rspec'
require 'rspec/expectations'

describe 'Test exit status' do
  it "check status" do
    `cat /etc/redhat-release`
    expect($?.exitstatus).to eq(0)
  end
end

并使用rspec命令行运行此代码,例如:rspec test.rb

之前的代码是使用at_exit块。只有当您退出程序或接收到要被杀死的信号时,才会调用此方法。