如何期待"未初始化的常数"在RSpec测试中

时间:2015-09-03 16:31:15

标签: ruby rspec

我试图记录如果有人试图访问不存在的模块中的常量会发生什么。例如,请考虑以下模块:

module Enum
  GOOD = "good"
  BAD = "bad"
end

访问Enum :: GOOD很好,但是Enum :: MAYBE会抛出一个NameError。我在测试中发现这一点的唯一方法是通过挽救错误,虽然我真正喜欢的是期望它:

describe Enum do
  it "finds valid values" do
    expect(Enum::GOOD).to eq("good")
    expect(Enum::BAD).to eq("bad")
  end

  context "bad values throw NameError" do

    it "allows me to test using rescue" do
      begin
        Enum::NOT_VALID
        fail "should have raised error"
      rescue NameError
      end
    end

    it "does not allow me to expect a raised error" do
      expect(Enum::NOT_VALID).to raise_error(NameError)
    end
  end

end

使用救援条款是我唯一/最佳选择吗?请记住,我并没有真正尝试实现枚举,而是尝试记录当您尝试访问不存在的模块中的常量时会发生什么。

1 个答案:

答案 0 :(得分:3)

根据raise_error的文档,您应该使用一个块:

<?php
header('Access-Control-Allow-Origin: *');
$url = "http://localhost:50417/api/device";
$response = file_get_contents($url);
echo $response;
?>