1

テストの自動化に watir-cucumber を使用しています。次のメソッドを別の に書きましたが.rb、このメソッドはステップ定義にはありません。

 def has_logged_in?
   $browser.text.should include("t788")
 end

ステップ定義からこのメソッドを呼び出すと、このエラーが発生します。

 wrong argument type String (expected Module) (TypeError)

同じコードがステップ定義で正常に機能します。私は周りを検索しinclude、モジュールを含めるためにメソッドが使用されていることを発見しましたが、それはruby-includeメソッドでありshould includerspec\expectations. should includeでは、上記のようにステップ定義の外でメソッドを呼び出すにはどうすればよいですか。Linuxでwatir-cucumberを使用しています

4

2 に答える 2

5

include必要なメソッドはモジュールRSpec::Matchersにあります。

メソッドが (main の一部ではない) クラスにある場合has_logged_in?、RSpec::Matchers モジュールをクラスに含めることができます。これにより、メソッドにアクセスできるようになりますinclude

したがって、クラスは次のようになります。

class YourClass
    include RSpec::Matchers

    def has_logged_in?
        $browser.text.should include("t788")
    end
end

注: 以前はこれを行う必要はありませんでしたが、簡単なチェックから、RSpec::Matchers がメインではなくクラスに含まれている限り機能します。それをメインにインクルードしても、何もしないように見えます (つまり、include は引き続き標準の include モジュール メソッドを呼び出します)。これを行うことの負の副作用があるかどうかを確認するために調査しませんでした.

于 2012-10-23T13:23:27.593 に答える
0

gemファイル内:

gem 'rspec', "1.3.2", :require => "spec/expectations"

または、RSpec 1.XXのenv.rbで:

require 'spec/expectations'

または、RSpec 2.Xのenv.rbで:

require 'rspec/expectations'
于 2012-10-22T21:42:10.967 に答える