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::EnqueueA看起来与RSpec::Rails::Matchers::ActiveJob::HaveBeenEnqueued不太相似。

很确定您正在使用rspec-activejob 。 是时候开始使用rspec-rails的匹配器了。

所有3条评论

您能否设置一个断点并检查have_been_enqueued返回的实例的类的源是什么?

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

RSpec::ActiveJob::Matchers::EnqueueA看起来与RSpec::Rails::Matchers::ActiveJob::HaveBeenEnqueued不太相似。

很确定您正在使用rspec-activejob 。 是时候开始使用rspec-rails的匹配器了。

很确定您正在使用rspec-activejob 。 是时候开始使用rspec-rails的匹配器了。

谢谢菲尔,卸载rspec-activejob后,我现在可以使用exactly

很高兴知道@jaredbeck ,很乐意提供帮助🙌

此页面是否有帮助?
0 / 5 - 0 等级