안녕하세요 나는 레일 모델 내부에 다음과 같은 코드가 있습니다레일 :이 외부 서비스 호출을 스텁 및 테스트하는 방법은 무엇입니까?
describe Page do
context "calculate_page_speed for Page" do
let(:google) { FactoryGirl.create(:page, url: "http://www.google.com") }
it "should set the page speed" do
google.speed.should be_nil
google.calculate_page_speed
google.speed.should_not be_nil
end
end
end
가 어떻게 효과적으로 테스트 중에 호출하지 않는 외부 서비스를 스텁 수 있습니다 테스트가
여기class Page < ActiveRecord::Base
def calculate_page_speed(url)
browser = Watir::Browser.new :phantomjs
start = Time.now
browser.goto url
finish = Time.now
self.speed = finish - start
end
end
입니까?
class Page < ActiveRecord::Base
def calculate_page_speed(url)
start = Time.now
browser.goto url
finish = Time.now
self.speed = finish - start
end
def browser
@browser ||= Rails.env.test? ? FakeBrowser.new : Watir.new(:phantomjs)
end
class FakeBrowser
def goto
end
end
end
그러나 여기에서 당신은 크지 않다 자극 코드의 테스트 코드를 가지고 같은 방법이 있습니다
예 실제로 테스트하기 위해 프로덕션 코드를 변경하는 것을 싫어합니다. 코드의 마지막 줄이 더 재미있을 것 같습니다. – JohnDel