2

こんにちは、rspec で watir を使用していますが、次のコードのチャンクで問題が発生しています。

私が間違っていることを理解できません。私が得る正確なエラーは、「構文エラー、予期しない $end、keyword_end @b.text.include を期待していますか? "Ark © 1" です。

describe "Copyright statement" do 
   it "should exist" do 
    @b.text.include? "Ark © 1"
   end
end

どんな助けでも大歓迎です。ありがとう。

4

3 に答える 3

1

@SteveRobillardは、彼の返信で欠落している終了エラーメッセージに対処しましたが、そこでrspecを使用しようとしている方法に別の大きな問題があります。問題は、.includeの結果で実際には何もしていないということです。そこにあるべきではないので、メソッド。コードはメソッドを実行していますが、ビットバケットに返される「true」または「false」を効果的にトスしています。あらゆる種類の検証が欠落しているため、そのテストが失敗することはありません。線をもっと近づける必要があると思います

describe "Copyright statement" do 
   it "should exist" do 
     @b.text.should include "Ark © 1"
   end 
end     

これを修正しても、欠落している最終的な問題はおそらく修正されませんが、そのようなものがなければ、「テスト」は実際には何もテストしていません。

また、私であれば、著作権がhtmlのどこかにあるだけでなく、フッターなどの特定の場所にあることを確認したいと思います。フッターは通常、divなどのある種のコンテナー内にあります。そのdivのIDが「フッター」の場合、コードのその部分は次のようになります。

it "should be found within the footer" do
  @browser.div(:id => 'footer').text.should include 'copyright © Yoyodyne 1984'
end

Watirで使用されているrspecを確認する良い方法は、watir自体のrspecファイルを確認することです。たとえば、div要素の仕様と、それが実行する必要のあるすべてのテストはhttps://github.com/watir/watirspecにあります。 /blob/master/div_spec.rb

于 2012-05-23T05:34:07.313 に答える
1

「無効なマルチバイト文字 (US-ASCII)」というエラーを検索しているときに、Web 上で解決策を見つけました。

この行を先頭に追加すると、著作権表示に役立ちます!

# encoding: UTF-8

ファイルの先頭にある単なるコメントですが、著作権文字と Rspec/Ruby 1.9 の問題を解決します。

皆様のご協力とご支援に感謝いたします。本当に感謝しています!

于 2012-05-24T18:51:45.310 に答える
1

あなたのインデントは最初の端からずれていると思います.整列するには別のスペースが必要です.

describe "Copyright statement" do 
   it "should exist" do 
    @b.text.include? "Ark © 1"
   end 
end

これを修正すると、@ChuckvanderLinden と私が考える本当の問題を確認できるはずです。

私は Dave Thomas からこのヒントを見つけました。

http://pragdave.blogs.pragprog.com/pragdave/2008/12/ruby-19-can-check-your-indentation.html

-w フラグを付けてファイルを実行すると、問題とコード内の正確な場所をよりよく理解できます。

ruby -w samplefile.rb

これにより、次のような出力が得られます。

t.rb:5: warning: mismatched indentations at 'end' with 'if' at 3
t.rb:9: warning: mismatched indentations at 'end' with 'def' at 2
t.rb:10: syntax error, unexpected $end, expecting keyword_end

エラーを見つけやすくし、

于 2012-05-23T04:12:54.440 に答える