首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在rspec NoMethodError中使用巫术:未定义的方法`authenticates_with_sorcery!

在rspec NoMethodError中使用巫术:未定义的方法`authenticates_with_sorcery!
EN

Stack Overflow用户
提问于 2015-07-19 12:07:02
回答 1查看 459关注 0票数 0

大家好,我正在尝试测试一个控制器,在这个控制器中必须对用户进行身份验证,但是我一直得到NoMethodError: undefined method `authenticates_with_sorcery!',即使控制器本身也在工作,而且用户模型也是如此。因此,基本上:如果我在服务器上执行操作,如果运行rake spec,它就不会工作。

用户模型

代码语言:javascript
复制
class User < ActiveRecord::Base
  authenticates_with_sorcery!

  validates :password, presence: true, confirmation: true, length: { minimum: 8 }
  validates :email, presence: true, uniqueness: true
  validates :password_confirmation, presence: true
end

用户工厂

代码语言:javascript
复制
FactoryGirl.define do
  factory :user do
    email "whatever@whatever.com"
    password "password"
    password_confirmation "password"
  end
end

控制器规范

代码语言:javascript
复制
require 'rails_helper'

RSpec.describe Admin::ImagesController, :type => :controller do

  before(:each) do
    create(:user)
    login_user_post("whatever@whatever.com", "secret")
  end

  describe "GET 'new'" do
    it "returns http success" do
      get 'new', venue_id: 1
      expect(response).to be_success
    end
  end
end

spec_helper.rb要求'factory_girl_rails‘要求’魔法‘

代码语言:javascript
复制
RSpec.configure do |config|
  config.include FactoryGirl::Syntax::Methods
  config.include Sorcery::TestHelpers::Rails
  config.include Sorcery::TestHelpers::Rails::Controller, type: :controller
  config.include Sorcery::TestHelpers::Rails::Integration, type: :feature
end

如果我现在运行rake spec,就会得到:

代码语言:javascript
复制
1) Admin::ImagesController GET 'new' returns http success
 Failure/Error: create(:user)
 NoMethodError:
   undefined method `authenticates_with_sorcery!' for #<Class:0x007fc1221c1430>
 # ./app/models/user.rb:2:in `<class:User>'
 # ./app/models/user.rb:1:in `<top (required)>'
 # ./spec/controllers/admin/images_controller_spec.rb:6:in `block (2 levels) in <top (required)>'

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-26 21:26:33

我想我发现了一个问题:“工厂女孩不喜欢和巫术一起工作,如果我用一个制造者代替工厂”:

代码语言:javascript
复制
Fabricator(:user, :class_name => "User") do
  id { sequence }
  password { "secret" }
  email { "whatever@whatever.com" }
  salt { "asdasdastr4325234324sdfds" }
  crypted_password { Sorcery::CryptoProviders::BCrypt.encrypt("secret", "asdasdastr4325234324sdfds") }
end

效果很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31501006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档