【问题标题】:Rspec expect raise_error ObjectDisabledException throws NameError exceptionRspec 期望 raise_error ObjectDisabledException 抛出 NameError 异常
【发布时间】:2013-11-12 21:56:04
【问题描述】:

我一直使用 watirspec-master 文件作为示例来编写我自己的 RSpec 测试。我最近遇到了一种情况,我需要测试单击或设置事件引发的异常。我根据 checkbox_spec.rb 文件中的代码编写了以下测试。我只是把原来的 lambda 语法改成了 expect 语法。

el4 = browser.checkbox(:id, "category_8")
expect { el4.set }.to raise_error(ObjectDisabledException)

执行时,此代码抱怨未初始化的常量 ObjectDisabledException。 lambda 语法产生相同的错误。完整的错误响应如下。

Failure/Error: lambda { el4.set }.should raise_error(ObjectDisabledException)
NameError:
   uninitialized constant RSpec::Core::ExampleGroup::Nested_1::Nested_2::Nested_2::Nested_1::Nested_1::Nested_1::ObjectDisabledException
Shared Example Group: "SF Categories tab" called from ./cf-manage/spec/_suite_sf_abusive_dev_spec.rb:135
# ./cf-manage/spec/_shared_sf_categories.rb:122:in `block (4 levels) in <top (required)>'

我已经查找了有关 raise_error 方法的一些文档,但没有找到。我的第一个想法是 ObjectDisabledException 是错误的值。但该值在 watirspec-master 文件中重复使用。有什么想法有什么问题吗?

【问题讨论】:

    标签: rspec lambda watir uninitialized-constant raiseerror


    【解决方案1】:

    ObjectDisabledException(和其他 Watir 异常)是在 Watir::Exception 模块中定义的自定义异常。

    要在您的规范中使用它们,您需要指定例外全名:

    expect { el4.set }.to raise_error(Watir::Exception::ObjectDisabledException)
    

    或者,如果您要进行大量异常测试,则应该通过添加(在需要 watir 之后的某个时间点)来包含 Watir::Exception 模块:

    include Watir::Exception
    

    您可以在watir-classic gem's implementation.rbwatir-webdriver's spec_helper.rb 中看到这一点。

    【讨论】:

    • 优秀的答案。工作完美。谢谢,贾斯汀。 :)
    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 2017-11-27
    • 2020-05-01
    • 2013-11-10
    • 2015-01-23
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多