3

私は次のようなRackアプリを持っています:

app = Rack::Builder.new do

    map '/' do
        # ...
    end

    map '/edit' do
        # ...
    end

end.to_app

ロングテールのインストール/セットアップ/学習プロセスなしでテストするにはどうすればよいですか。

RSpec と minitest は本当に素晴らしいですが、私はそれらを学習したりセットアップしたりしたくありません。

単純なRubyでプラグインしてすぐにテストを作成/実行するだけのものはありますか?

高度なテクニックや落とし穴なしで、上記のアプリを書いたのと同じくらい簡単なテストを書きたいです。

KISS I Trustで!

4

3 に答える 3

4

最も単純ですか?と一緒に使用Rack::TestTest::Unitます。gem install rack-testと実行しますruby filename.rb

require "test/unit"
require "rack/test"

class AppTest < Test::Unit::TestCase
  include Rack::Test::Methods

  def app
    Rack::Builder.new do
      map '/' do
        run Proc.new {|env| [200, {'Content-Type' => 'text/html'}, "foo"] }
      end

      map '/edit' do
        # ...
      end
    end.to_app
  end

  def test_index
    get "/"
    assert last_response.ok?
  end
end

更新:要求されたRSpecスタイル- gem install rspec; で実行rspec filename.rb

require 'rspec'
require 'rack/test'

describe 'the app' do
  include Rack::Test::Methods

  def app
    Rack::Builder.new do
      map '/' do
        run Proc.new {|env| [200, {'Content-Type' => 'text/html'}, "foo"] }
      end

      map '/edit' do
        # ...
      end
    end.to_app
  end

  it 'says foo' do
    get '/'
    last_response.should be_ok
    last_response.body.should == 'foo'
  end
end
于 2012-10-30T16:06:21.953 に答える
4

Specular+Sonarバンドルを試すことができます。

Specular必要な場所にテストを書くためのものです。

Sonarは、アプリと通信するモック「ブラウザ」ですrack-testが、いくつかのユニークな機能とよりシンプルなワークフローを備えています。

それらの使用は次のように簡単です。

...
app.to_app

Spec.new do
  include Sonar
  app(app)

  get
  check(last_response.status) == 200
  # etc...
end
puts Specular.run

そのため、仕様をアプリのすぐ横に置き、プレーンな Ruby でテストをすばやく作成できます。何も学ぶ必要はありません。

CIBox で実行されている完全な例を参照してください

(自動的に実行されない場合は、[実行] ボタンをクリックします)

PS: この方法で Rack アプリを作成するのはちょっと面倒です。

のようなマッパーを試すことができますAppetite

したがって、アプリは次のようになります。

class App < Appetite
  map :/

  def index
    'index'
  end

  def edit
    'edit'
  end
end

同じ例を参照してくださいAppetite

于 2012-10-30T16:15:39.957 に答える
0

Rack-test を使用することもできますが、これも minitest/unit test を使用する必要がありますが、Rack アプリをテストする最も一般的な方法です。

于 2012-10-30T15:53:51.873 に答える