Rails 테스트 정보 5 (컨트롤러편)

4418 단어 테스트RSpecRails

소개



테스트에 거부 반응이 있기 때문에 먼저 정리하고 싶습니다.
정리해 갈수록 거부 반응이 없어졌을지도...

조금씩 기사를 써 갑니다.
Rails 테스트 정보 1
Rails 테스트 정보 2
Rails 테스트 정보 3
Rails 테스트 정보 4
이미 알고 계신 분, 생략하는 방법 등 알고 계시면 조언 바랍니다.

컨트롤러 테스트에서 확인하고 싶은 것


  • 액션에서 정의하는 인스턴스 변수의 값이 예상되는지 확인합니다.
  • 액션이 호출된 후 예상 보기가 표시되는지 확인

  • 컨트롤러 테스트 코드를 작성하는 방법


  • 컨트롤러의 메서드에서 특정 작업이 호출되었을 때의 동작을 확인합니다.
  • 1개의 액션에 대해, 방금 전의 확인하고 싶은 것의 2개를 확인한다.

  • 1. 액션내에서 정의하는 인스턴스 변수의 값이 기대한 것이 되는지를 확인한다
    2. 액션이 호출된 후 예상 보기가 표시되는지 확인

    하나의 액션에 대해 2개 이상의 example(it '' do ~ end)가 필요하다.

    spec/controllers/◯◯_controller_spec.rb
    describe ◯◯Controller do
      describe 'HTTPメソッド名 #アクション名' do
        it "インスタンス変数は期待した値?" do
      "擬似的にリクエストを行ったことにするコードを書く"
          "エクスペクテーションを書く"
        end
    
        it "期待するビューに遷移できる?" do
          "擬似的にリクエストを行ったことにするコードを書く"
          "エクスペクテーションを書く"
        end
      end
    
    

    컨트롤러 테스트 코드를 작성하는 방법에 대한 참고 사항


  • 각 액션은 각각 요청될 때 http 메소드가 다르다.
  • 따라서 각각 조금씩 테스트를 작성하는 방법이 다릅니다.


  • 이하, Rails에 정해져 있는 7개의 액션 중 http 메소드가 get인 액션에 관한 테스트 코드를 작성하는 방법입니다.
    다른 액션에 관해서는, 수시로 추기해 갑니다.

    컨트롤러 테스트 준비



    Gemfile에 추가


    group :development, :test do
      # Call 'byebug' anywhere in the code to stop execution and get a debugger console
      gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
      gem 'rspec-rails'
      gem 'factory_bot_rails'
      gem 'rails-controller-testing'  ← 追記
    end
    

    그리고 bundle install! !

    Spec 파일 생성(컨트롤러용)



    ① spec 디렉토리 이하에 controllers 디렉토리를 작성한다.
    ② ①내에 ◯◯_controller_spec.rb를 작성한다.
  • 이번에는 groups_controller.rb를 테스트합니다.
  • 라는 것으로 groups_controller_spec.rb를 만들었습니다.
  • 녹색이 되어 있는 곳입니다.



  • 기본 코드 작성



    작성한 ◯◯_controller_spec.rb에 이하의 코드를 기입한다.

    ◯◯_controller_spec.rb
    require 'rails_helper'
    
    describe ◯◯Controller do
    
    end
    

    그룹의 경우

    groups_controller_spec.rb
    require 'rails_helper'
    
    describe GroupsController do
    
    end
    

    테스트를 실행할 수 있는지 확인


    ターミナル
    
    % bundle exec rspec spec
    

    위의 명령에서도 문제는 없지만 지정된 테스트 파일 만 실행할 수 있습니다.
    ターミナル
    
    % bundle exec rspec spec/controllers/◯◯_controller_spec.rb
    
    



    라고 출력되면 준비해 k입니다! 이번은 여기까지!

    테스트 편, 계속!



    (http 메소드가 get로 불리는 액션의 컨트롤러 테스트에 들어갑니다!)

    사이고에게



    매일 공부중이므로, 수시로 갱신합니다.
    여러분의 복습에 활용하실 수 있으면 다행입니다.

    좋은 웹페이지 즐겨찾기