Rails Controller Test with Rspec
Controller 테스트 범위 Controller의 CRUD 관련 매소드가 예상한것과 같이 동작한다. CRUD외 다른 메소드가 예상한 것과 같이 동작한다. nested attribute nested routing Controller method를 호출 하는 방법 <HTTP verb> <controller method name> <params> get :index get :edit, id: 1 get :show, id: 1 post :create, name: 'a', brand: 'b' delete :destroy, id: 1 Controller method에서 선언된 변수에 접근하는 방법 assign(:variable) expect(assign(:items)).to be [item1, item2] Controller method로 부터 반환되는 값 response expect(response).to redirect_to user_path expect(response).to render_template :index...
마인드 스토밍(mind storming) - 창의력을 기르는 방법
마인드 스토밍(mind storming) - 창의력을 기르는 방법 종이에 ‘질문 형식’으로 가장 큰 목표나 문제점을 적는다. 구체적일 수록 대답을 얻는게 쉽다 Bad : “어떻게 하면 내가 더 행복할 수 있을까?” Good : “어떻게 하면 내년에 소득을 5만 달러에서 10만 달러로 올릴 수 있을까?” 20개의 대답을 적는다. 개인적이고, 긍정적이며 현재의 관점에서 서술한다. Bad : 전화를 더 많이 건다. Good : 매일 전화를 5통씩 더 걸겠다. 최소한 20개의 답을 써야 한다. 처음부터 자세히 살펴보고 즉각 활용할 수 있는...
VCR - 빠른 3rd party API 테스트
:vcr 태그 사용 /spec/support/vcr.rb VCR.configure do |config| config.cassette_library_dir = "spec/vcr" config.hook_into :webmock config.ignore_localhost = true # :vcr tag 사용 config.configure_rspec_metadata! end :vcr 태그에 option 전달 context 'with valid attributes', :vcr do context 'with valid attributes', vcr: {record: :new_episodes} do VCR::Errors::UnhandledHTTPRequestError 카세트에 저장된 URL과 test에서 요청하는 URL이 다를 때 발생 Factory_girl에서 sequence를 이용해 URL을 만들 경우, 이후에 테스트 수트가 추가되면서 URL이 변경되는 경우 발생 create() method에 URL관련된 attribute를 parameter로 넘겨줘서 고정시켜 해결 vcr-issue vcr reference https://semaphoreci.com/community/tutorials/stubbing-external-services-in-rails...
Rspec Style Guide
http://betterspecs.org/ko/
How To Test Crawling Codes
crawling할 페이지를 vcr로 mocking합니다. 해당 페이지에서 crawling 되는 결과값을 알아내서 expect()로 해당 결과가 crawling code로 부터 나오는지 확인합니다.