Rspec expect raise_错误ObjectDisabledException引发NameError异常

Rspec expect raise_错误ObjectDisabledException引发NameError异常,rspec,lambda,watir,uninitialized-constant,raiseerror,Rspec,Lambda,Watir,Uninitialized Constant,Raiseerror,我一直在使用watirspec主文件作为示例来编写自己的RSpec测试。我最近遇到了一种情况,需要测试单击或设置事件引发的异常。我基于checkbox_spec.rb文件中的代码编写了以下测试。我只是将原来的lambda语法改为expect语法 el4 = browser.checkbox(:id, "category_8") expect { el4.set }.to raise_error(ObjectDisabledException) 执行时,此代码会抱怨未初始化的常量ObjectDi

我一直在使用watirspec主文件作为示例来编写自己的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)>'
失败/错误:lambda{el4.set}.应引发_错误(ObjectDisabledException)
名称错误:
未初始化常量RSpec::Core::ExampleGroup::Nested_1::Nested_2::Nested_2::Nested_1::Nested_1::Nested_1::ObjectDisabledException
共享示例组:./cf manage/spec/\u suite\u SF\u滥用的\u dev\u spec.rb:135调用的“SF类别选项卡”
#/cf manage/spec/_shared_sf_categories.rb:122:in'block(4层)in'

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

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

要在规格中使用它们,需要指定异常全名:

expect { el4.set }.to raise_error(Watir::Exception::ObjectDisabledException)
或者,如果您正在进行大量异常测试,则应该通过添加(在需要Watir之后的某个点)来包括Watir::exception模块:


您可以在和中看到这一点。

非常好的答案。工作得很好。谢谢你,贾斯汀
include Watir::Exception