М. 9 Мои ошибки в тестах - Evanto/qna GitHub Wiki
Создаваемые в этом задании тесты:
- spec/factories/votes.rb
- spec/models/vote_spec.rb
- spec/controllers/votes_controller_spec.rb
- spec/acceptance/vote_answer_spec.rb
- spec/acceptance/vote_question_spec.rb
votes_controller_spec.rb
- Перенесла expect на другую строку для удобства чтения, но это оказалось ошибкой. Было:
it 'saves a new downvote to the db' do
expect { post :create, params: { value: -1, votable_id: answer.id, votable_type: "Answer" }, format: :js }.to
change(Vote, :count).by(1)
end
Правильно:
it 'saves a new downvote to the db' do
expect { post :create, params: { value: -1, votable_id: answer.id, votable_type: "Answer" }, format: :js }.to change(Vote, :count).by(1)
end
- Поставила везде везде
.to_not
, а надо.not_to
- Везде, где
.to_not
, прописала цифру, на сколько не должен меняться объект, а это не надо писать - он просто не должен меняться, ни ка сколько. Было:.not_to change(Vote, :count).by(-1)
, а надо:.not_to change(Vote, :count)
- Логинила юзера через
sign_in_user
, а надоsign_in(user)
acceptance/vote_answer_spec.rb
- Написала везде
js: :true
, а надоjs: true
- Написала
sign_in_user
, а надоsign_in(user)
- Поставила блоки первого теста в порядке
Up
,Down
,Reset
- естественно, они не проходили, т.к. послеUp
нельзя сразу сделатьDown
безReset
, пришлось поменять порядок.
acceptance/vote_question_spec.rb
- Написала везде
visit question_path
, а надоvisit questions_path
(т.е. посещалась страница show вопроса, а должна - страница index всех вопросов)