Почему RSpec не проходит эту проверку? - PullRequest
1 голос
/ 23 февраля 2011

У меня есть следующие проверки:

it "should have 100 adventure points" do
    user = User.new
    user.adventure_points.should == 100
end 

it "should be level 1" do
    user = User.new
    user.level.should == 1
end

it "should have 10 sapphires" do
    user = User.new
    user.sapphires.should == 10 
end

Затем у меня также есть миграция:

  t.string :name,                          :limit => 20
  t.integer :strength_points,              :default => 0
  t.integer :dexterity_points,             :default => 0
  t.integer :magic_points,                 :default => 0
  t.integer :accuracy_points,              :default => 0
  t.integer :health_points,                :default => 0
  t.integer :level,                        :default => 1
  t.integer :adventure_points,             :default => 100
  t.integer :sapphires,                    :default => 10
  t.integer :duel_wins,                    :default => 0
  t.integer :duel_losses,                  :default => 0      
  t.string  :image_url       
  t.integer :strength

Когда я запускаю rspec, я получаю:

A new User
  is not valid without a name
  is not valid without a first class
  is not valid without a password
  should have 100 adventure points
  should be level 1 (FAILED - 1)
  should have 10 sapphires (FAILED - 2)

Failures:

  1) A new User should be level 1
     Failure/Error: user.level.should == 1
       expected: 1
            got: nil (using ==)
     # ./spec/models/user_spec.rb:28

  2) A new User should have 10 sapphires
     Failure/Error: user.sapphires.should == 10
       expected: 10
            got: nil (using ==)
     # ./spec/models/user_spec.rb:33

Почему он показывает эти ошибки на уровне, сапфиры, но работает нормально для adventure_points?Более того, если я открываю консоль и делаю User.new, я получаю значения по умолчанию, как и ожидалось.Что здесь происходит?

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Нашел решение сам, довольно подлый.Мне пришлось запустить rake: test: prepare, потому что тестовая база данных не имела данных о приборах и не была подготовлена: P

1 голос
/ 23 февраля 2011

Значения по умолчанию для базы данных не устанавливаются до тех пор, пока модель не будет сохранена.Попробуйте:

it "should have 100 adventure points" do
    user = User.create
    user.adventure_points.should == 100
end 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...