М. 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

  1. Перенесла 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
  1. Поставила везде везде .to_not, а надо .not_to
  2. Везде, где .to_not, прописала цифру, на сколько не должен меняться объект, а это не надо писать - он просто не должен меняться, ни ка сколько. Было: .not_to change(Vote, :count).by(-1), а надо: .not_to change(Vote, :count)
  3. Логинила юзера через sign_in_user, а надо sign_in(user)

acceptance/vote_answer_spec.rb

  1. Написала везде js: :true, а надо js: true
  2. Написала sign_in_user, а надо sign_in(user)
  3. Поставила блоки первого теста в порядке Up, Down, Reset - естественно, они не проходили, т.к. после Up нельзя сразу сделать Down без Reset, пришлось поменять порядок.

acceptance/vote_question_spec.rb

  1. Написала везде visit question_path, а надо visit questions_path (т.е. посещалась страница show вопроса, а должна - страница index всех вопросов)