Почему я получаю эту ошибку (1)? - PullRequest
0 голосов
/ 20 мая 2011

Я получаю ошибку rspec, которую не ожидаю, и в итоге проверяю другим способом. Тем не менее, я хотел бы знать, почему это не работает. Ошибка как:

 Failure/Error: @user.should have(1).work_shift
 RuntimeError:
   expected work_shift to be a collection but it does not respond to #length or #size

И спецификация:

        it "should create the work shift" do
            post :start, :work_hours => 6
            flash[:error].should == nil
            @user.should have(1).work_shift
            response.should redirect_to labor_url                       
        end

Почему я получаю эту ошибку? (Пользователь has_one work_shift, ассоциация работает нормально)

Ответы [ 2 ]

1 голос
/ 21 мая 2011

Я думаю, что вы, вероятно, хотите:

@user.work_shift.should_not == nil

, который также можно записать как:

@user.work_shift.should be_present
1 голос
/ 20 мая 2011
expected work_shift to be a collection

Так как у пользователя есть только один рабочий_шифт

@user.work_shift

не дает массив.

В сообщении RSpec указано

but it does not respond to #length or #size

Так что matcher ищет массивоподобный объект.

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