2012-02-07 4 views
0

Я написал несколько тестовых примеров Rspec в моем spec/models/season_spec.rb файле. Они, как: -Ошибка тестового примера модуля Rspec

require 'spec_helper' 

describe Season do 

    it 'should not be without name' do 
    Season.new(:name=>nil,:number_of_weeks=>'3',:start_date=>'2012-02-07',:user_id=>'113').should_not be_valid 
    end 

    it 'should not be without number of weeks' do 
    Season.new(:name=>'Apurva',:number_of_weeks=>nil,:start_date=>'2012-02-07',:user_id=>'113').should_not be_valid 
    end 

    it 'should not be without start_date' do 
    Season.new(:name=>'Apurva',:number_of_weeks=>'3',:start_date=>nil,:user_id=>'113').should_not be_valid 
    end 

    it 'should not be without user_id' do 
    Season.new(:name=>'Apurva',:number_of_weeks=>'3',:start_date=>'2012-02-07',:user_id=>nil).should_not be_valid 
    end 

    it 'should be with valid attributes' do 
    Season.new(:name=>'Apurva',:number_of_weeks=>'3',:start_date=>'2012-02-07',:user_id=>'113').should be_valid 
    end 
end 

И в моей модели я санкционировал эти поля, как: -

class Season < ActiveRecord::Base 

    validates_presence_of :name,:number_of_weeks,:start_date,:user_id 
end 

Но все тестовые примеры неудачны. И это дает мне следующий вывод: -

/usr/lib/ruby/gems/1.8/gems/bundler-1.0.21/lib/bundler/runtime.rb:138: warning: Insecure world writable dir /usr/lib/ruby/gems/1.8 in PATH, mode 040777 
FFFFF 

Failures: 

/usr/lib/ruby/gems/1.8/gems/rspec-core-2.8.0/lib/rspec/core/formatters/base_text_formatter.rb:165:in `pending_fixed?': undefined method `pending_fixed?' for #<ActiveRecord::StatementInvalid:0xb6cd03c8> (NoMethodError) 
    from /usr/lib/ruby/gems/1.8/gems/rspec-core-2.8.0/lib/rspec/core/formatters/base_text_formatter.rb:19:in `dump_failures' 
    from /usr/lib/ruby/gems/1.8/bundler/gems/rails-27357a6965eb/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:473:in `each_with_index' 
    from /usr/lib/ruby/gems/1.8/gems/rspec-core-2.8.0/lib/rspec/core/formatters/base_text_formatter.rb:17:in `each' 
    from /usr/lib/ruby/gems/1.8/gems/rspec-core-2.8.0/lib/rspec/core/formatters/base_text_formatter.rb:17:in `each_with_index' 
    from /usr/lib/ruby/gems/1.8/gems/rspec-core-2.8.0/lib/rspec/core/formatters/base_text_formatter.rb:17:in `dump_failures' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/reporter.rb:75:in `send' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/reporter.rb:75:in `notify' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/reporter.rb:74:in `each' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/reporter.rb:74:in `notify' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/reporter.rb:23:in `conclude' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/reporter.rb:14:in `report' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/command_line.rb:24:in `run' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/runner.rb:55:in `run_in_process' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/runner.rb:46:in `run' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/runner.rb:10:in `autorun' 
    from /usr/bin/rspec:4 
+0

Пожалуйста, позаботьтесь о том, чтобы отформатировать ваш код и stacktraces, отложив их на четыре пробела при публикации здесь. Спасибо. –

+0

Пожалуйста, отформатируйте, как указал Райан - спасибо. –

+0

Спасибо, Михал, Райан и Майкл. Извините за неправильный формат. Теперь, пожалуйста, посмотрите –

ответ

2

Во-первых, есть опечатка в 'should not be without name' спецификации. Убедитесь, что это только опечатка, набрав здесь quetion или код.

Во-вторых, эти тесты бессмысленны, поскольку этот код уже протестирован here.

+0

+1 За советом не тестировать код Rails. Сосредоточьтесь на своей деловой логике. –

+0

@MarkThomas: Я думаю, вы и я, возможно, ошибаемся здесь. Дэвид Хелмиски говорит, что в целом это, безусловно, правильный путь, однако, в случае валидации - вам нужно добавить спецификации/тесты, поскольку это поведение. Отметьте его комментарий по адресу: http://stackoverflow.com/questions/9175150/testing-the-relationships-and-methods-in-model-using-rspec#comment11545458_9175150 – Swanand

+0

Согласен. Валидации могут быть спецификациями, однако тесты должны соответствовать бизнес-требованиям. Просто нужно быть осторожным, чтобы не переходить линию на тестирование самой системы валидации. –

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