2013-09-14 2 views
0

Последовало за railscasts при обновлении до рельсов 4, чтобы завершить процесс, при этом я сломал набор пользовательских тестов.Обновлено до Rails 4, rspec вызывает проблемы

user_spec.rb:

describe User do 

    before do 
     @user = User.new(email: "[email protected]", 
        password: "foobar", password_confirmation: "foobar") 
    end 

    subject(@user) 

    it { should respond_to(:email)} 
    it { should respond_to(:password_digest)} 
    it { should respond_to(:password)} 
    it { should respond_to(:password_confirmation)} 
    it { should respond_to(:authenticate)} 
end 

Вот что RSpec является выплевывая:

bundle exec rspec spec/models/user_spec.rb 
/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.13.1/lib/rspec/core/memoized_helpers.rb:180:in 
`define_method': tried to create Proc object without a block (ArgumentError) 

Вот мой Gemfile

source 'https://rubygems.org' 
ruby '2.0.0' 

gem 'rails', '4.0.0' 
gem 'bootstrap-sass', '2.3.2.0' 
gem 'will_paginate' 
gem 'bootstrap-will_paginate' 
gem 'bcrypt-ruby', '3.0.1' 

group :development, :test do 
    gem 'sqlite3', '1.3.7' 
    gem 'rspec-rails', '2.13.1' 
end 

# Gems used only for assets and not required 
# in production environments by default. 
gem 'sass-rails', '4.0.0' 
gem 'uglifier', '2.1.1' 
gem 'coffee-rails', '4.0.0' 
gem 'jquery-rails', '2.2.1' 
gem 'turbolinks', '1.1.1' 
gem 'jbuilder', '1.0.2' 

group :test do 
    gem 'selenium-webdriver', '2.35.1' 
    gem 'capybara', '2.1.0' 
    gem 'factory_girl_rails' 
end 

group :production do 
    gem 'pg', '0.15.1' 
    gem 'rails_12factor', '0.0.2' 
end 

Что может быть причиной себе эти вопросы, ? Спасибо!

ОБНОВЛЕНИЕ: user.rb:

class User < ActiveRecord::Base 
    before_save {self.email = email.downcase} 
    VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 
    validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, 
     uniqueness: { case_sensitivity: false } 

    has_secure_password 
    validates :password, length: { minimum: 6 } 
end 
+0

Попробуйте удалить все тесты и оставить только блок 'describe User do; end' (возможно, добавьте фиктивный тест, чтобы проверить 'it 'foo' do; true.should be_true; end'. У вас есть такая же ошибка или тест передан? – gotva

+0

Тестирование прошло – Derptacos

+1

Это означает, что проблема в одном из тестов. Я предлагаю удалить все тесты и добавить их по одному - это помогает локализовать проблему. Я думаю, что проблема в этом 'password_digest' – gotva

ответ

2

subject принимает блок в качестве аргумента. Вы должны сказать subject {@user}.]

Вы получаете ошибку, которую получаете, потому что Ruby пытается обработать @user как объект Proc.

+0

Good ol опечатка ... Спасибо, что поймали это! – Derptacos

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