8

Google App Script で BDD を実行しようとしています。原則として、Cucumber、Capybara、Mechanize の組み合わせを使用して、Rails 以外の外部サイトで BDD を実行できるはずであることを理解しています。この場合、作成した Google App Script をテストしようとしています。

このプロジェクトでは、これまでのところ完全なコードを取得しています。

https://github.com/tansaku/GoogleAppScriptBDD

ただし、現在このエラーで立ち往生しています:

rack-test requires a rack application, but none was given (ArgumentError)

私はラックを使用したくないことを知っており、フォーラムとスタック オーバーフローを検索してきました。

require 'capybara/cucumber'
Capybara.run_server=false
Capybara.current_driver = :mechanize 
Capybara.app_host = 'https://script.google.com/macros/s/AKfycbytA2xBsaQ0_FSJXNkPVXQekBnWD4hXPOaCjCT00wo/dev' 

このSO投稿は関連しています:

Ruby 以外、Rack 以外の API をテストするために Cucumber を使用する方法

しかし、HTML インターフェイスをテストしているので、Capybara を使用したいと思います。別の方法を次に示します。

http://blogs.kent.ac.uk/webdev/2012/08/02/using-capybara-webkit-with-cucumber-without-rails-or-rack/

そして、私はここでの議論に従ってきました:

https://groups.google.com/group/cukes/browse_thread/thread/297163800eaf2968

しかし、ラックをオフにする方法を本当に理解したいと思っています。また、上記のブログ投稿で説明されている webkit ではなく、mechanize を使用することを望んでいました。

とにかく、ここにベストプラクティスがありますか、それとも代替案を試し続けるだけですか?

ちょっと腹立たしいのは、ここのカピバラの指示: https://github.com/jnicklas/capybaraが次のように 言っていることです:

Rails を使用していない場合は、Capybara.app をラック アプリに設定します。

Capybara.app = マイラックアプリ

しかし、それは別のエラー「 uninitialized constant Object::MyRackApp (NameError) 」を生成し、 MyRackApp がどうあるべきか、またはどこで見つけるべきかわかりません(ルビーで作業している一般的な問題:-/ )キュウリやカピバラのソースを調べて、MyRackApp とは何かを調べていますか?

とにかく、ここにすべてを文書化すると思いました-どんな提案でも大歓迎です。Google アプリのスクリプトを BDD できるようにしたいのですが...

4

2 に答える 2

10

Rails を使用していない場合は、Capybara.app をラック アプリに設定します。

次のように読むことを意図していました。

テストしているアプリケーションが Rack アプリで、Rails ではない場合は、Capybara.app を Rack アプリに設定します。

この質問の結果、Capybara の README 更新されました。

外部アプリケーションに対してテストを実行したいので、Capybara.app_hostの代わりに設定する必要がありCapybara.appます。


私はcapybara-mechanizeを使用していませんが、Rack 以外の外部アプリケーションをテストするために使用するのに最適なドライバーではないかもしれません。Mechanize は Racktest を継承しており、Racktest は Rack インターフェイス (主に Rails) を使用してアプリをテストするためのものです。アプリに Rack インターフェイスがない場合、capybara-mechanize は最適な選択ではない可能性があります。

組み込みの selenium 、poltergeistcapybara-webkit、またはterminusを使用することをお勧めします

また、次を使用して、コードを少し良く書くことができますCapybara.configure

Capybara.configure do |config|
  config.run_server = false
  config.default_driver = :selenium
  config.app_host = 'https://www.google.com' # change url
end
于 2013-03-27T21:14:25.593 に答える