Steak は Ruby 製の受け入れテストのためのフレームワークです。
cavalle/steak – GitHub
Github にある説明を読んでいただくとわかると思いますが Steak ではテストは RSpec のように書くことができます。
同様のツールに Cucumber もありますが、Cucumber は英語や日本語で書かなければならないので、自分の中でどうもしっくりしませんでした。
そのため、自分にとっては Steak のようにかけた方がずっと書きやすいです。
ということで、これからは Steak を使って受け入れテストを書いていこうと思っています。
そんな Steak ですが、RESTful API のテストもしたいです。
どうも Steak の裏で動いている Capybara というテストフレームワークは、 visit ‘/’ のように GET することはできるのですが、 POST PUT DELETE というような RESTful API をテストする上ではそれだけでは足りません。
以下のような方法で、POST 等のメソッドを呼び出すことが可能なようです。
$RAILS_ROOT/spec/acceptance/support/helper.rb
module HelperMethods def setup_driver @driver = Capybara.current_session.driver end def post(path, params = {}) @driver.process :post, path, params end def put(path, params = {}) @driver.process :put, path, params end def delete(path, params = {}) @driver.process :delete, path, params end end
$RAILS_ROOT/spec/acceptance/api/articles_spec.rb
require File.dirname(__FILE__) + '/../acceptance_helper' feature "Articles" do background do setup_driver end scenario 'update article' do params = { :article => {} } params[:article][:title] = 'foo' put('/api/articles/1.json', params) end end
@driver.status_code とかでレスポンスのステータスコードが取得できたりします。
ほかの情報はここなどを読むとよいでしょう。
Class: Capybara::Driver::Base