Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

... 미완성

소개

루비는 직접 unit test 툴을 제공하며, 다른 다양한 종류의 unit test 툴들과도 함께 사용할 수가 있다. 그래서 적응하는데 약간의 혼란을 겪고 있는 중이다. 이 중 RSpec를 이용해서 sinatra 애플리케이션의 unit test를 만드는 방법을 살펴보려 한다.

sinatra에서 유닛 테스트의 장점

일반적인 방법으로 sinatra 웹 애플리케이션을 테스트한다고 가정해보자. 아래의 준비과정을 거쳐야 할 것이다.
  • 테스트 시나리오를 준비한다.
  • 웹 서버를 실행한다.
  • sinatra 웹 애플리케이션 서버를 실행한다.
  • 웹 client 프로그램(firefox, chrome, wget, curl 등등)을 이용해서 테스트를 한다.
이 방식은 테스트 준비단계가 복잡하고, 그만큼 많은 시간이 소모된다는 단점이 있다. 웹 서버와 애플리케이션 서버를 다시 시작하는 것에 많은 시간이 필요하기 때문이다. 그나마 경량 웹 프레임워크인 sinatra는 다른 것들에 비해서 준비시간이 짧기는 하지만, 테스트 하다보면 그 준비시간이 짜증나게 느껴진다.

유닛 테스트를 이용하면, 웹 서버와 sinatra의 준비과정 없이도 즉시 테스트를 진행할 수 있다. 또한 테스트 시나리오를 코드화 할 수 있기 때문에, 자동화된 테스트도 가능하다.

RSpec

먼저 rspec 파일을 만들어야 한다. 간단한 예제로 살펴보겠다.
require 'myapp'        # 테스트할 sinatra 애플리케이션 
require 'rack/test'
require 'json'

describe 'system information' do
	include Rack::Test::Methods
	def app           # 테스트할 sinatra 애플리케이션을 정의한다.
		MyApp         # 내가 테스트할 애플리케이션 이름은 MyApp이다.
	end
	it ": system uptime" do
		get '/system/uptime'
		body = last_response.body
		json = JSON.parse(body)	
		json['items']['uptime'].should be > 0 
	end
end

... 계속

히스토리

  • 작성일 :