Rspec-rails: #<:activejob :: matchers :: enqueuea i = "4" />の未定義のメソッド `exactly '

作成日 2020年04月01日  ·  3コメント  ·  ソース: rspec/rspec-rails

使用しているRuby、Rails、RSpecのバージョンは何ですか?

bundle exec ruby --version
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]
bundle exec rails --version
Rails 6.0.2.2
bundle exec rspec --version
RSpec 3.9
  - rspec-core 3.9.1
  - rspec-expectations 3.9.1
  - rspec-mocks 3.9.1
  - rspec-rails 4.0.0
  - rspec-support 3.9.2

観察された行動

     Failure/Error: expect(::RedactedJob).to have_been_enqueued.exactly(2).times

     NoMethodError:
       undefined method `exactly' for #<RSpec::ActiveJob::Matchers::EnqueueA:0x00007feb2aa89d10>
     # ./spec/redacted/enqueue_jobs_spec.rb:37:in `block (3 levels) in <module:Redacted>'

期待される動作

4.0のドキュメントには次の例があるので、 exactlyが定義されることを期待していました。

      UploadBackupsJob.perform_later('backup')
      expect(UploadBackupsJob).to have_been_enqueued.exactly(:once)

回避策

expect(::RedactedJob).to have_been_enqueued.times(2)

サンプルアプリを提供できますか?

必要であると判断された場合は、喜んで。

最も参考になるコメント

ブレークポイントを設定して、 have_been_enqueuedが返すインスタンスのクラスのソースを確認してください。

undefined method `exactly' for #<RSpec::ActiveJob::Matchers::EnqueueA:0x00007feb2aa89d10>

RSpec::ActiveJob::Matchers::EnqueueARSpec::Rails::Matchers::ActiveJob::HaveBeenEnqueuedとあまり似ていません。

rspec-activejobを使用していることを確認してください。 代わりにrspec-railsのマッチャーを使い始める時が来ました。

全てのコメント3件

ブレークポイントを設定して、 have_been_enqueuedが返すインスタンスのクラスのソースを確認してください。

undefined method `exactly' for #<RSpec::ActiveJob::Matchers::EnqueueA:0x00007feb2aa89d10>

RSpec::ActiveJob::Matchers::EnqueueARSpec::Rails::Matchers::ActiveJob::HaveBeenEnqueuedとあまり似ていません。

rspec-activejobを使用していることを確認してください。 代わりにrspec-railsのマッチャーを使い始める時が来ました。

rspec-activejobを使用していることを確認してください。 代わりにrspec-railsのマッチャーを使い始める時が来ました。

Philに感謝します。 rspec-activejobをアンインストールした後、 exactlyを使用できるようになりました。

@jaredbeckを知っておくと、喜んでお手伝いします🙌

このページは役に立ちましたか?
0 / 5 - 0 評価