Rspec-rails: undefinierte Methode „genau“ für #<:activejob::matchers::enqueuea i="4"/>

Erstellt am 1. Apr. 2020  ·  3Kommentare  ·  Quelle: rspec/rspec-rails

Welche Ruby-, Rails- und RSpec-Versionen verwenden Sie?

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

Beobachtetes Verhalten

     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>'

Erwartetes Verhalten

Die 4.0-Dokumentation enthält das folgende Beispiel, daher habe ich erwartet, dass exactly definiert wird.

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

Problemumgehung

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

Können Sie eine Beispiel-App bereitstellen?

Gerne, wenn bestimmt Bedarf besteht.

Hilfreichster Kommentar

Können Sie bitte einen Haltepunkt setzen und überprüfen, was die Quelle der Klasse ist, von der eine Instanz have_been_enqueued zurückgibt?

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

RSpec::ActiveJob::Matchers::EnqueueA sieht RSpec::Rails::Matchers::ActiveJob::HaveBeenEnqueued nicht allzu ähnlich.

Ziemlich sicher, dass Sie rspec-activejob verwenden. Es ist höchste Zeit, stattdessen die Matcher von rspec-rails zu verwenden.

Alle 3 Kommentare

Können Sie bitte einen Haltepunkt setzen und überprüfen, was die Quelle der Klasse ist, von der eine Instanz have_been_enqueued zurückgibt?

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

RSpec::ActiveJob::Matchers::EnqueueA sieht RSpec::Rails::Matchers::ActiveJob::HaveBeenEnqueued nicht allzu ähnlich.

Ziemlich sicher, dass Sie rspec-activejob verwenden. Es ist höchste Zeit, stattdessen die Matcher von rspec-rails zu verwenden.

Ziemlich sicher, dass Sie rspec-activejob verwenden. Es ist höchste Zeit, stattdessen die Matcher von rspec-rails zu verwenden.

Danke Phil, nach der Deinstallation rspec-activejob kann ich jetzt exactly verwenden.

Gut zu wissen @jaredbeck , helfe gerne 🙌

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen