4

私は、watirspec-master ファイルを例として使用して、独自の RSpec テストを作成しています。最近、クリックまたはセット イベントによってスローされる例外をテストする必要がある状況に遭遇しました。私は、checkbox_spec.rb ファイルのコードに基づいて、次のテストを作成しました。オリジナルをラムダ構文から期待構文に変更しました。

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

このコードを実行すると、初期化されていない定数 ObjectDisabledException が発生します。ラムダ構文でも同じエラーが発生します。完全なエラー応答を以下に示します。

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 ファイルで繰り返し使用されます。何が間違っているのですか?

4

1 に答える 1

2

ObjectDisabledException (およびその他の Watir 例外) は、Watir::Exception モジュールで定義されているカスタム例外です。

仕様でそれらを使用するには、例外のフルネームを指定する必要があります:

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

あるいは、多くの例外テストを行っている場合は、以下を追加して Watir::Exception モジュールを含める必要があります (watir を要求した後のある時点):

include Watir::Exception

これは、watir-classic gem の implementation.rbwatir-webdriver の spec_helper.rb で確認できます。

于 2013-11-12T23:58:08.127 に答える