4

開発者が拡張できるSinatraアプリケーションを含むgemを書いています。例えば:

# gem code:
require 'sinatra'
module Mygem
  class Application < Sinatra::Base
    get 'auth/login' {}
    get 'auth/logout {}
  end
end

# developer code:
require 'mygem'
class DeveloperApp < Mygem::Application
  # ..
end

RSpecの使用も始めています。この機能をテストするためにRSpecをどのように構成する必要がありますか?

4

3 に答える 3

5

上記の参考文献はすべて有益で有用ですが、ほとんどがレール固有のものです。モジュール式の Sinatra アプリの基本的なテストの簡単なレシピを見つけるのは非常に難しいことがわかったので、これが他の人の質問に答えてくれることを願っています。これは完全に最小限のテストであり、可能な限り小さくなっています。これはおそらく唯一の方法ではありませんが、モジュラー アプリではうまく機能します。

require 'sinatra'
class Foo < Sinatra::Base
   get '/' do
    "Hello"
  end
end

require 'rack/test'

describe Foo do

  include Rack::Test::Methods

  def app
    Foo.new
  end

  it "should be testable" do
    get '/'
    last_response.should be_ok
  end

end

テストを起動するときにサーバーを実行する必要がないことに注意してください (私が見たいくつかのチュートリアルでは、実行することを暗示していました) - これは統合テストではありません。

于 2012-12-20T06:33:46.617 に答える
0

実際には非常に簡単です。rspec を gemfile に追加して (バンドル インストール)、gem 内に spec/ というディレクトリを作成するだけです。それが完了したら、rspec の構成 (ほとんどの場合、ライブラリからさまざまなファイルを必要とします) を含むファイル spec/spec_helper.rb を追加し、spec のヘルパー メソッドをいくつか定義します。次に、モデルとコントローラーごとに、my_model_name_spec.rb または my_controller_name_spec.rb というファイルを作成し、そこでテストを行います。

rspec を使い始めるのに役立つリソースを次に示します。

レールキャスト:

http://railscasts.com/episodes/275-how-i-test

http://railscasts.com/episodes/71-testing-controllers-with-rspec

http://railscasts.com/episodes/157-rspec-matchers-macros/

そして、より高度な(しかし十分に説明された)ものについては:

http://benscheirman.com/2011/05/dry-up-your-rspec-files-with-subject-let-blocks

于 2012-06-27T06:34:13.593 に答える