2015-11-10 3 views
1

Если я запустить RSpec спецификации в терминале я вижу эту ошибку:неопределенными локальная переменная или метод `пользователя» для главного: Object (NameError)

3:in `<top (required)>': undefined local variable or method `user' for main:Object (NameError) 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:268:in `load' 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:268:in `block in load' 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:240:in `load_dependency' 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:268:in `load' 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1327:in `block in load_spec_files' 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1325:in `each' 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1325:in `load_spec_files' 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:102:in `setup' 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:88:in `run' 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:73:in `run' 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:41:in `invoke' 
from /home/marketa/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.3.2/exe/rspec:4:in `<top (required)>' 
from /home/marketa/.rvm/gems/ruby-2.2.1/bin/rspec:23:in `load' 
from /home/marketa/.rvm/gems/ruby-2.2.1/bin/rspec:23:in `<main>' 
from /home/marketa/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `eval' 
from /home/marketa/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `<main>' 

Мое приложение/модели/user.rb выглядит следующим образом:

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 

    belongs_to :contact, :foreign_key => "contact_id", dependent: :destroy 
    accepts_nested_attributes_for :contact 

    has_many :advertisements 
    has_many :reviews 

    #accepts_nested_attributes_for :contact 
    #accepts_nested_attributes_for :contact>>>>>>> e29ade655eb7ee8f553f049b9fbb505581246758 
    after_create :welcomer 
    before_create :set_default_role 

    validates :email, presence: true 

    ROLES = %w[admin user] 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    def get_replies_where_advertisement(advertisement, user) 
    Reply.where("advertisement_id = ? OR receiver = ?", advertisement.id, user.id).order(created_at: :DESC) 


    end 


    def get_replies_user(reply) 
    user = User.find_by(:id => reply.user_id) 

    end 

    private 
    def welcomer 
    UserMailer.welcome_email(self) 
    end 

    def set_default_role 
    if self.role.blank? 
     self.role = 'user' 
    end 
    end 

end 

Моих спецификации/модель/user_spec.rb выглядит следующим образом:

require 'rails_helper' 
RSpec.describe user, type: :model do 
describe "relation" do 
    it {should has_many :advertisements} 
    it {should has_many :reviews} 
    it {should belongs_to(:contact).dependent(:destroy)} 
end 

describe "validation" do 
    it {should validate_presence_of :email} 
end 
end 

И моя спецификация/фабрики/user.rb выглядит следующим образом

require 'faker' 

FactoryGirl.define do 
    factory :user do 

    end 
end 

Пожалуйста, помогите, спасибо

+1

Вам нужно имя класса, то есть 'RSpec.describe User', случай важен. –

ответ

3

Вы должны иметь

Rspec.describe User, type: :model do 
    #code 
+0

этот код у меня в моем spec/models/user_spec.rb – railsgirl

+0

@ MarkétaGlatzová Вы писали, что у вас был 'Rspec.desribe user'. –

+0

@ MarkétaGlatzová сделал это исправить вашу ошибку? –

Смежные вопросы