2011-10-28 10 views
2

キュウリをたくさん使っています。私はBDD環境として本当に好きです。キュウリを使ってRuby以外の非Rack APIをテストする方法

私はAPIをテストするための外部ツールとして使用したいと考えています。私は次のようなことをしたい:

Scenario: Hit api /info path and get info back 
    When I visit the API path '/info' 
    Then I should see the following text "Here's info on the API" 

またはそれに類するもの私は、主にAPIをブラックボックスとして扱い、入力と出力のみをテストしたいと考えています。私はAPIの中で何かを調べるつもりはない。

私がキュウバー(例えばカピバラ)を使って見てきたほとんどのライブラリは、Rackベースのアプリケーションの周りに設計されているようです。私はそれに似ていますが、Rackに依存しないものが好きです。

ラックに依存しない宝石が存在する場合、それが存在する場合、または、リモートサーバー上にあるAPIをテストするためにCapybaraを使用する方法はありますか?

答えて

5

Capybaraがテスト用に作られたアプリケーションは、HTML UI(Aslakがコメントの中で指摘する)を使ってアプリケーションをテストするために使われるので、私はリモートAPIをテストするためにCapybaraを使用しません。

代わりに、私はHTTPartyのようなものと一緒にCucumber *を使用します。これは、HTTPリクエストを作成し、それらをきれいに解析するためのツールになります。ここでアイデアです:

When /^I visit the API path '(.*?)'/ do |path| 
    @result = HTTParty.get("http://theapi.com/#{path}") 
end 

Then /^I should see the following result:$/ do |result| 
    @result.should == result 
end 

最後のステップここでは、次のように使用します。

Then I should see the following result: 
    """ 
    { success: true } 
    """ 

* 私は実際に個人的にはRSpecを使用することになり、私は構文が少ない不器用見つけます。

+0

おかげさまで、Ryan - minitest -v-rspecを使用することについてのご意見はありますか? –

+0

は、あなたが提供したステップデフを使って物事を書き直しました。私は外に出ています。まさに私が考えていたもの。 –

+2

Capybaraは* local *アプリケーションのテスト用に作られていません。これは、HTML UIを使用してWebアプリケーションをテストするために作成されています。 Capybaraは*リモート* Webアプリケーションでもうまく動作します(サポートしている多くのドライバの1つ、例えばセレンを使用しています)。非HTML(RESTful JSON/XML API)には適していません。 キュウリはRackTest(Rackアプリの場合)またはHTTParty(そうでない場合)をお勧めします。 キュウリの本には両方のアプローチに関する章があります。 –

1

私はしばらくの間、Drupalアプリケーションに対してキュウリを使用してきました。それはうまくいきます。

これは私はあなたが機械化を使用したい場合は、それは少しバギーだセレン

https://github.com/thuss/standalone-cucumber

とカピバラを設定助けました。私は0.3.0-rc3を使用しなければなりませんでした。リダイレクトの後にいくつかの問題がありました。フィールド名に "[]"文字が含まれているフォームを送信する場合、いくつかの問題があります。私のチームの他の人がそのバグを発見したので、私はかなり覚えていない。

+0

素晴らしい - リンクありがとう! –

関連する問題