как решить ноль ошибки в rspec - PullRequest
0 голосов
/ 08 декабря 2010

HII,

У меня проблема с нулевой ошибкой. Мой код контроллера такой

def list
  @users=User.find(params[:id])

  if (@users.servers.count>0)
    puts 'more than one'
  else
    puts 'equal or less than one'
  end
end

Мой Rspec код

it'should_test_list' do
  @user_mock=mock(User)
  User.should_receive(:find).and_return(@user_mock)
  @user_mock.should_receive(servers).and_return(@user_mock.servers)
  @user_mock.servers.should_receive(:count).and_return(1)
end

Я получаю предупреждение, что @user_mock.servers равно нулю

Еще одна вещь, которую я хочу спросить: это правильный путь для этой проблемы ??

Я жду ответа

1 Ответ

0 голосов
/ 08 декабря 2010

Вы не поставили метку servers на макете User, поэтому спецификация не может продолжаться с этой точки. Исправьте это так:

@user_mock.stub(:servers).and_return([mock]). Или добавьте его при создании макета.

Кроме того, ваша спецификация никогда не вызывает действия контроллера. Вам нужно get :list. Пример:

describe UsersController do
  it 'should list' do
    @user_mock = mock(User,:servers=>[mock])
    User.should_receive(:find).and_return(@user_mock)
    @user_mock.servers.should_receive(:count).and_return(1)
    get :list, :id => 1
  end
end

Последнее замечание: я предполагаю, что в @users = User.find(params[:id]) вы действительно имели в виду @user, поскольку возвращается только одна строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...