Rspec expect raise_error ObjectDisabledException抛出NameError异常

时间:2013-11-12 21:56:05

标签: rspec lambda watir uninitialized-constant raiseerror

我一直在使用watirspec-master文件作为例子来编写我自己的RSpec测试。我最近遇到过一种情况,我需要测试click或set事件引发的异常。我根据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文件中重复使用。有什么想法是错的吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

或者,如果您正在进行大量异常测试,则应添加Watir :: Exception模块(在需要watir之后的某个点):

include Watir::Exception

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

相关问题