6

Capybara の readme ( Using Capybara with MiniTest::Spec を参照) には、モジュールを正しくインクルードすればこれを実行できると書かれていますが、具体的な例は示されていません... このようなモジュールをインクルードしてみました:

class MiniTest::Spec
  include Capybara::DSL
end

... 無駄に。このエラーが発生し続けます:

<main>': undefined methodmain:Object の feature' (NoMethodError)

コメントアウトされたコードに書かれているように動作させるにはどうすればよいですか?


spec/acceptance/api/reward_terms_spec.rb:

require "#{Dir.pwd}/spec/acceptance/acceptance_helper"

# this syntax works...

describe 'reward terms acceptance test' do
  include Capybara::DSL

  describe '#index' do
    specify {
      visit '/reward_terms'
      # ...
    }
  end
end

# this syntax doesn't work...

# feature 'RewardTerms', %q{
#   In order to get all reward terms available to me
#   As an API client
#   I want to list all active RewardTerms
# } do

#   background do
#     set_api_headers
#   end

#   scenario 'RewardTerm index' do
#     visit '/reward_terms'
#     ...
#   end
# end

仕様/受け入れ/acceptance_helper.rb:

ENV["RAILS_ENV"] = "test"
require "#{Dir.pwd}/config/environment"

require 'minitest/autorun'
require 'capybara/rails'

def set_api_headers(device_id = 'abcd1234')
  header 'Accept', 'application/json'
  header 'X-Device-Id', device_id
end
4

3 に答える 3

2

この投稿には、MinitTest::Specをcapybaraで実行する方法についての優れた説明があります。そこで彼は基本的にCapybara::DSLをすべての仕様の基本クラスに含めます

class RequestSpec < MiniTest::Spec
  include Rails.application.routes.url_helpers
  include Capybara::DSL
end

これはセットアップではかなりうまく機能しますが、もちろんMiniTest::Specを再度開くことはありません。

于 2011-11-23T19:56:49.307 に答える
0

これは、仕様構文を使用して Rails で機能テストと統合テストを実行するための単純な test_helper リグです。上記の記事は、 tenderloveの要点に基づいており、 MiniTest with Capybaraと、多くのいじくり回しとソース ポリングが含まれています。

https://gist.github.com/1607879

于 2012-01-17T05:11:15.153 に答える