2012-04-02 7 views
0

私はキュウリとワティを始めようとしています。私はインストールを行い、シンプルな「機能」を書いて/コピーしました。しかし、私はページに何が入っているかを確認することでどこにも行きません。 Googleのキュウリとワティールで値を確認する

で、私はそれをチェックしてよろしいの人が私のドキュメント を見つけることができるようにするためにGoogleの を検索すると、最初のページに記載されている
Scenario: Searching for JS.Class docs 
    Given I have opened "http://www.google.com/" 
    When I search for "JS.Class" 
    Then I should see a link to "http://jsclass.jcoglan.com/" with text "JS.Class v3.0" 

マイENV:

この私の機能:

特集.RBファイルには、この

require 'watir' 
require 'rspec' 

のように見え、これは私のsearch_steps.rb

012です
@ie 

Given /^I have opened "([^\"]*)"$/ do |url| 
    @ie = Watir::IE.new 
    @ie.goto(url) 
end 

When /^I search for "([^\"]*)"$/ do |arg1| 
    @ie.text_field(:name, "q").set(arg1) 
    @ie.button(:name, "btnG").click 
end 

Then /^I should see a link to "([^\"]*)" with text "([^\"]*)"$/ do |arg1, text| 
    puts arg1 

    # @ie.text.should include(arg1) 
    @ie.close 
end 

「@ie.text.should include(arg1)」行のコメントを外すと、このエラーがスローされます。

Then I should see a link to "http://jsclass.jcoglan.com/" with text "JS.Class v3.0" # features/step_definitions/search_steps.rb:13 
    true 
    undefined method `split' for ["http://jsclass.jcoglan.com/"]:Array (NoMethodError) 
    ./features/step_definitions/search_steps.rb:17:in `/^I should see a link to "([^\"]*)" with text "([^\"]*)"$/' 

    features\search.feature:8:in `Then I should see a link to "http://jsclass.jcoglan.com/" with text "JS.Class v3.0"' 

失敗シナリオ: キュウリの機能\ search.feature:5#シナリオ:

今次に、関数はその仕事をしていませんJS.Classのドキュメントを検索します。私がその行をコメントアウトすると、本当にやっているのはテキストを書き出すことだけです。

宝石が私はRSpecの次キュウリ< 1.1.9>、私が持っているルビーの< 2.9.0>、ワチール< 2.0.4>とワチール-webdriverを< 0.5.3>

バージョンが含まれていますは:ruby 1.9.3p125です。

私はこれをWindows 7 Ultimateで実行しています。

私は宝石などを紛失しているのでしょうか?メッセージを読むと、見つけられないメソッドが呼び出されていますが、このメソッドを使用するWeb上のかなりのページが見つかりました。

正しい方向のヘルプ、ガイダンス、またはポインタを感謝して歓迎します。

+1

あなたは '--backtrace'スイッチとキュウリを実行して、完全なエラーメッセージを投稿することができますか?例外がどこから来ているのかがわかります。 –

答えて

2

問題は、(手動で)Google検索結果のテキストを見ると、「http://jsclass.jcoglan.com/」というテキストが表示されないことに気づくでしょう。したがって、期待通りにテストは失敗します。あなたが実際に使用してリンクするためのチェックを行う場合、それはより堅牢になり、言っ

Then I should see a link to "jsclass.jcoglan.com/" with text "JS.Class v3.0" 

:この問題を解決するには

、あなたが「のhttp://」を削除することによってステップへの呼び出しを修正することができます次のコード。テキストがページ上のどこかにあることをチェックすると、偽陽性につながることができます(WatirMelonに関する最新の記事を参照してください)

@ie.link(:url => arg1, :text => text).exists?.should be true 
+0

こんにちはジャスティン、返事をありがとう。私は当初ie.textではなくie.htmlを使用していました。初心者の間違い。私はあなたが示唆したコードを使用してみましたが、それは次のエラーをスローします。 "equalityを使用して比較すると、オブジェクトの同一性は比較されますが、期待されたものと実際のものは同じオブジェクトではありません。この例ではオブジェクトのアイデンティティを気にしないならば==期待する必要があります "これにより、実際のオブジェクトのタイプを見ていると思うようになりますが、 'be'を '=='に変更しました。 –

+0

奇数、私のために働いたコード。しかし、私は完全にアンインストールし、あなたが言及した宝石だけを再インストールしましたが、今私はエラーが表示されます。 –

+0

'=='を使用したときに発生するエラーは何ですか?この変更を行うと、テストは私に合格します。 –

関連する問題