Ruby on Rails Rspec NoMethodError:未定义的方法“ not_to”

杰克·波普

我正在使用Ruby on Rails构建的基本应用程序中测试电子邮件功能。在使用.not_to的任何测试中,我都会收到NoMethodError。这是我遵循的教程提供的Rspec:

require 'rails_helper'

describe Comment do
  include TestFactories

  describe "after_create" do

    before do
      @post = associated_post
      @user = authenticated_user
      @comment = Comment.new(body: "My comment", post: @post, user_id: 10000)
    end

    context "with user's permission" do

      it "send an email to users who have favorited the post" do
        @user.favorites.where(post: @post).create

        allow( FavoriteMailer )
          .to receive(:new_comment)
          .with(@user, @post, @comment)
          .and_return( double(deliver: true) )

        @comment.save
      end

      it "does not send emails to users who haven't" do
        expect ( FavoriteMailer )
          .not_to receive(:new_comment)

        @comment.save
      end
    end

    context "without permission" do
      before { @user.update_attribute(:email_favorites, false) }

      it "does not send emails, even to users who have favorited" do
        @user.favorites.where(post: @post).create

        expect ( FavoriteMailer )
          .not_to receive(:new_comment)

        @comment.save
      end
    end

  end
end

这是错误:

Failures:

  1) Comment after_create with user's permission does not send emails to users who haven't
     Failure/Error: expect ( FavoriteMailer )
     NoMethodError:
       undefined method `not_to' for FavoriteMailer:Class
     # /home/vagrant/.rvm/gems/ruby-2.0.0-p576/gems/actionmailer-4.0.10/lib/action_mailer/base.rb:482:in `method_missing'
     # ./spec/models/comment_spec.rb:28:in `block (4 levels) in <top (required)>'

  2) Comment after_create without permission does not send emails, even to users who have favorited
     Failure/Error: expect ( FavoriteMailer )
     NoMethodError:
       undefined method `not_to' for FavoriteMailer:Class
     # /home/vagrant/.rvm/gems/ruby-2.0.0-p576/gems/actionmailer-4.0.10/lib/action_mailer/base.rb:482:in `method_missing'
     # ./spec/models/comment_spec.rb:41:in `block (4 levels) in <top (required)>'

Finished in 4.66 seconds (files took 24.42 seconds to load)
3 examples, 2 failures

Failed examples:

rspec ./spec/models/comment_spec.rb:27 # Comment after_create with user's permission does not send emails to users who haven't
rspec ./spec/models/comment_spec.rb:38 # Comment after_create without permission does not send emails, even to users who have favorited
艾略特·赛克斯(Eliot Sykes)

我怀疑这些行上的代码是以与预期不同的顺序解释的:

expect ( FavoriteMailer )
      .not_to receive(:new_comment)

试试这个:

expect( FavoriteMailer ).not_to receive(:new_comment)

需要注意的主要是,在Ruby中,一个好的约定是在方法调用和参数的左括号之间不留空格(即使这通常可以奏效,但最好避免停止这样的麻烦)。

在这个例子中,这意味着除去之间的空间中expect( FavoriteMailer )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RSpec的未定义方法“它”(Hartl的Ruby on Rails教程)

来自分类Dev

rspec-rails + capybara NoMethodError:未定义的方法“创建”

来自分类Dev

学习 Ruby on Rails:NoMethodError(未定义方法 `[]' for nil:NilClass):

来自分类Dev

nil:NilClass Ruby on Rails的未定义方法'>'(NoMethodError)

来自分类Dev

未定义的方法“主题” NoMethodError Ruby on Rails,Michael Hartl教程

来自分类Dev

NoMethodError-未定义的方法-Ruby on Rails-集合选择下拉列表

来自分类Dev

Ruby on Rails 5.2 - NoMethodError(nil:NilClass 的未定义方法`host'):

来自分类Dev

NoMethodError(nil:NilClass的未定义方法“ []”):即使在使用dig时,Ruby on Rails

来自分类Dev

Ruby on Rails NoMethodError:#<用户:0x50987b8>的未定义方法`'

来自分类Dev

#<RSpec :: ExampleGroups ::的Rails rspec未定义方法'receive'

来自分类Dev

NoMethodError:RSpec 的未定义方法“get”

来自分类Dev

Ruby on Rails,未定义的方法合并

来自分类Dev

Ruby on Rails,方法未定义

来自分类Dev

Ruby on rails 未定义方法`firstname'

来自分类Dev

ruby - NoMethodError:未定义的方法“状态”

来自分类Dev

Rspec&Rails:true的未定义方法“ to”:TrueClass

来自分类Dev

Rails Rspec-未定义的方法“会话”

来自分类Dev

rspec核心Ruby on Rails

来自分类Dev

Ruby on Rails Rspec 验证

来自分类Dev

rails NoMethodError:未定义的方法“酒店”

来自分类Dev

RSpec NoMethodError:“主对象的未定义方法'描述'”

来自分类Dev

RSpec + Sidekiq:NoMethodError:未定义的方法“作业” MyImportJob

来自分类Dev

NoMethodError:#<RSpec :: ExampleGroups :: CompetitionsController :: Create>的未定义方法'mock'

来自分类Dev

NoMethodError:RSpec :: ExampleGroups :: ApplicationsController:Class的未定义方法“ setup”

来自分类Dev

#<Object(NoMethodError)capybara rspec的未定义方法`visit'

来自分类Dev

NoMethodError未定义方法sign_in rspec设计

来自分类Dev

Ruby on Rails未定义方法“ to_datetime”

来自分类Dev

Ruby on Rails错误:未定义的方法“ comments_path”

来自分类Dev

nil:NilClass的未定义方法“错误”-Ruby on Rails

Related 相关文章

  1. 1

    RSpec的未定义方法“它”(Hartl的Ruby on Rails教程)

  2. 2

    rspec-rails + capybara NoMethodError:未定义的方法“创建”

  3. 3

    学习 Ruby on Rails:NoMethodError(未定义方法 `[]' for nil:NilClass):

  4. 4

    nil:NilClass Ruby on Rails的未定义方法'>'(NoMethodError)

  5. 5

    未定义的方法“主题” NoMethodError Ruby on Rails,Michael Hartl教程

  6. 6

    NoMethodError-未定义的方法-Ruby on Rails-集合选择下拉列表

  7. 7

    Ruby on Rails 5.2 - NoMethodError(nil:NilClass 的未定义方法`host'):

  8. 8

    NoMethodError(nil:NilClass的未定义方法“ []”):即使在使用dig时,Ruby on Rails

  9. 9

    Ruby on Rails NoMethodError:#<用户:0x50987b8>的未定义方法`'

  10. 10

    #<RSpec :: ExampleGroups ::的Rails rspec未定义方法'receive'

  11. 11

    NoMethodError:RSpec 的未定义方法“get”

  12. 12

    Ruby on Rails,未定义的方法合并

  13. 13

    Ruby on Rails,方法未定义

  14. 14

    Ruby on rails 未定义方法`firstname'

  15. 15

    ruby - NoMethodError:未定义的方法“状态”

  16. 16

    Rspec&Rails:true的未定义方法“ to”:TrueClass

  17. 17

    Rails Rspec-未定义的方法“会话”

  18. 18

    rspec核心Ruby on Rails

  19. 19

    Ruby on Rails Rspec 验证

  20. 20

    rails NoMethodError:未定义的方法“酒店”

  21. 21

    RSpec NoMethodError:“主对象的未定义方法'描述'”

  22. 22

    RSpec + Sidekiq:NoMethodError:未定义的方法“作业” MyImportJob

  23. 23

    NoMethodError:#<RSpec :: ExampleGroups :: CompetitionsController :: Create>的未定义方法'mock'

  24. 24

    NoMethodError:RSpec :: ExampleGroups :: ApplicationsController:Class的未定义方法“ setup”

  25. 25

    #<Object(NoMethodError)capybara rspec的未定义方法`visit'

  26. 26

    NoMethodError未定义方法sign_in rspec设计

  27. 27

    Ruby on Rails未定义方法“ to_datetime”

  28. 28

    Ruby on Rails错误:未定义的方法“ comments_path”

  29. 29

    nil:NilClass的未定义方法“错误”-Ruby on Rails

热门标签

归档