1

respond_with_content_typeマッチャーはshoulda-matchers gem で非推奨になりました (バージョン > 2.0 およびバージョン 1.5.6 では多くの醜い警告)。

ソートボットは、開発者が統合テストを使用する必要があることを示唆していますが、これはリソースの少ないプロジェクトでは必ずしもそうではありません

質問は壊れたスペックを修正する方法ですか?...またはそれらを置き換える方法

参照:

4

1 に答える 1

1

最も簡単な方法は、出現するものを に置き換えるだけですrespond_with_content_type:

# spec/controllers/users_controller_spec.rb
describe UsersController do
  before{ get :index, :format => :xlsx }
  it 'response should be excel format' do
    response.content_type.to_s.should eq Mime::Type.lookup_by_extension(:xlsx).to_s
  end
end

適切なマッチャーが必要な場合:

# spec/support/matchers/respond_with_content_type_matchers.rb
RSpec::Matchers.define :respond_with_content_type do |ability|
  match do |controller|
    expected.each do |format|  # for some reason formats are in array
      controller.response.content_type.to_s.should eq Mime::Type.lookup_by_extension(format.to_sym).to_s
    end
  end

  failure_message_for_should do |actual|
    "expected response with content type #{actual.to_sym}"
  end

  failure_message_for_should_not do |actual|
    "expected response not to be with content type #{actual.to_sym}"
  end
end

# spec/spec_helper.rb
...
#ensure support dir is loaded
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}  
...

ところで:既存のソリューションhttps://github.com/tinfoil/shoulda-kept-assign-toshould assign_toよりもマッチャーを見逃した場合。Gem は単純な shoulda-matcher 拡張モジュールです

于 2013-09-12T09:19:29.607 に答える